【发布时间】:2018-01-21 01:22:19
【问题描述】:
我正在尝试通过在 ViewController2 中使用 addTarget 的完成函数并在 ViewController1 中引用一个会更改按钮标题的函数来从 ViewController1 设置按钮标题。我遇到的问题是按钮标题在出现 ViewController1 或 ViewController1 上的按钮触发 setButtonText() 函数之前不会改变。如果有人可以帮助解释和解决这个问题,那就太棒了!提前致谢。
视图控制器 1:
override func viewDidLoad() {
super.viewDidLoad()
buttonA.setTitle("FirstEdit", for: .normal)
newViewController.addTarget(self, action: #selector(newVCHandler), for: .touchUpInside)
}
func newVCHandler(){
present(ViewController2(), animated: true, completion: nil)
}
func setButtonText(){
buttonA.setTitle("\(Title.buttonA)", for: .normal)
}
视图控制器 2
override func viewDidLoad() {
super.viewDidLoad()
newTitleTextField.placeholder = "Set New Title"
dismissButton.setTitle("Save and Dismiss", for: .normal)
dismissButton.addTarget(self, action: #selector(dismissHandler), for: .touchUpInside)
}
func dismissHandler(){
dismiss(animated: true, completion:{
ViewController1().setButtonText()
})
【问题讨论】:
-
您的问题是双重的。首先,在解除动画完成(或被取消)之前,完成块不会执行。其次,您正在实例化
ViewController1的新实例,而不是在现有实例上调用setButtonText。