我有一个弹出视图控制器来更改设置。它会从UIPickerView
更新应用中的文字。它工作得很好,但是当我关闭pop view视图控制器时,文本标签不会刷新。当我按下并返回视图控制器时,标签会更新。
如何在解除弹出视图控制器后刷新当前视图?
以下是加载弹出窗口的代码:
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "trustSelect") as! WelcomeViewController
self.addChildViewController(popOverVC)
popOverVC.view.frame = self.view.frame
self.view.addSubview(popOverVC.view)
popOverVC.didMove(toParentViewController: self)
当点击按钮时,弹出视图控制器使用以下代码关闭视图控制器:
self.view.removeFromSuperview()
答案 0 :(得分:1)
您可能需要在主线程中设置文本。
DispatchQueue.main.async {
self.parent?.textLabel.text = "Random text"
}
答案 1 :(得分:1)
易于使用的本地通知,
1)将其放入您的弹出视图
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object:nil, userInfo: nil)
}
2)然后在ViewController中将其粘贴到viewDidLoad
中NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.ChangeText), name: "refresh", object: nil)
3)然后将此方法粘贴到ViewController中的某个位置,
func ChangeText(){
DispatchQueue.main.async {
self.parent?.textLabel.text = "Random text"
}
}