子视图关闭后刷新UIText标签

时间:2017-09-09 15:10:26

标签: swift

我有一个弹出视图控制器来更改设置。它会从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()

2 个答案:

答案 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"
 }
}