【发布时间】:2016-05-05 01:16:06
【问题描述】:
当在 AccountViewController 中按下后退按钮时,我想从我的 AccountViewController 更新我的 DashboardViewController 中的标签。
我尝试将变量从第二个视图传回给第一个视图并更新 viewDidLoad 和 viewWillAppear 中的标签,但是当第一个视图返回屏幕时它永远不会更新标签。
我尝试在第一个视图中创建一个函数,以使用传递给函数的字符串更新标签并从第二个视图调用该函数,但它说标签为 nil,因此无法更新。
我最近的尝试是创建一个委托,但也没有用。
这是我的委托尝试。
class DashboardViewController: UIViewController, AccountViewControllerDelegate {
@IBOutlet weak var welcome_lbl: UILabel!
func nameChanged(name: String){
var full_name = "Welcome \(name)"
welcome_lbl.text = "\(full_name)"
}
override func viewDidLoad() {
super.viewDidLoad()
AccountViewController.delegate = self
}
}
然后在我的 AccountViewController 我有这个
protocol AccountViewControllerDelegate{
func name_changed(name: String)
}
class AccountViewController: UIViewController, UITextFieldDelegate {
var info_changed = false
static var delegate: AccountViewControllerDelegate!
@IBAction func back_btn(sender: AnyObject) {
if(info_changed){
AccountViewController.delegate.name_changed(name_tf.text!)
}
self.dismissViewControllerAnimated(true, completion: nil)
}
我是否以某种方式搞砸了委托流程?或者有没有更简单的方法来做到这一点?
【问题讨论】: