如何在用户状态更改时更新 UILabel?



我希望能够向用户显示他们的用户状态,并且我已经编写了一些代码来执行此操作(它在viewDidLoad中(,但是如果用户登录或注销,它不会更新。

import UIKit
import Amplify
import AmplifyPlugins
import AWSMobileClient
class SettingsTableViewController: UITableViewController {
let userState = user
@IBOutlet weak var signInStateLabel: UILabel!
@IBOutlet weak var signOutButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
AWSMobileClient.default().initialize { (userState, error) in
if let userState = userState {
self.signInStateLabel.text = " (userState.rawValue)"
print("UserState: (userState.rawValue)")
} else if let error = error {
print("error: (error.localizedDescription)")
}
}
AWSMobileClient.default().addUserStateListener(self) { (userState, info) in
switch (userState) {
case .guest:
print("user is in guest mode.")
case .signedOut:
print("user signed out")
case .signedIn:
print("user is signed in.")
case .signedOutUserPoolsTokenInvalid:
print("need to login again.")
case .signedOutFederatedTokensInvalid:
print("user logged in via federation, but currently needs new tokens")
default:
print("unsupported")
}
}

}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 2
}

@IBAction func logInPresssed(_ sender: Any) {
performSegue(withIdentifier: "logInSegue", sender: nil)
signOutButton.isHidden = false
}
@IBAction func signOutPressed(_ sender: Any) {
signOutButton.isHidden = true
AWSMobileClient.default().signOut()

}
}

您需要添加此行

self.signInStateLabel.text = " (userState.rawValue)"

内部

AWSMobileClient.default().addUserStateListener(self) { (userState, info) in  
self.signInStateLabel.text = " (userState.rawValue)"
switch (userState) {

最新更新