我想从另一个viewController
更改标签。
第一个viewcontroller是MenuController
。第二个是LoginViewController
。
我想从Label.text
更改MenuController的LoginViewController
。
在LoginViewController
中:
let viewController = MenuController()
viewController.changeLabel("logout")
在
MenuController
中:class MenuController: UITableViewController {
var attractionImages = [String]()
var attractionNames = [String]()
var webAddresses = [String]()
@IBOutlet weak var loginLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
loginLabel.text = "Login"
print(loginLabel.text)
}
func changeLabel(Log: String)O {
self.loginLabel.text = log
print (log)
}
但是会发生错误。
我该如何解决?
谢谢你的帮助。
最佳答案
另一种实现方法是可以使用NSNotificationCenter
。吹就是这样的例子:
在您的MenuController
中添加以下代码:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshLbl:", name: "refresh", object: nil)
}
还要添加此辅助方法:
func refreshLbl(notification: NSNotification) {
print("Received Notification")
lbl.text = "LogOut"
}
现在在
LoginViewController
中,您的后退按钮 Action 将如下所示:@IBAction func back(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil, userInfo: nil)
self.dismissViewControllerAnimated(true, completion: nil)
}
现在,无论何时您从
LoginViewController
按下返回按钮,您的refreshLbl
方法都会从MenuController
调用。有关更多信息,请参见THIS示例。
关于ios - swift 从另一个viewcontroller更改标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33251132/