2017-09-09 10 views
0

設定を変更するためのポップオーバービューコントローラがあります。アプリ内のテキストをUIPickerViewから更新します。それはうまく動作しますが、ビューコントローラー上のポップアップを閉じると、テキストラベルがリフレッシュされません。戻るを押してビューコントローラに戻ると、ラベルが更新されます。UITextサブビュー終了後のラベルのリフレッシュ

ポップオーバービューコントローラを解除した後に現在のビューを更新するにはどうすればよいですか?ビューコントローラの上にポップボタンをタップした時にビューコントローラを却下するには、次のコードを使用しています

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() 

答えて

1

その

override func viewDidDisappear(animated: Bool) { 
    NSNotificationCenter.defaultCenter().postNotificationName("refresh", object:nil, userInfo: nil) 
} 

2)次に、あなたのViewControllerに

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.ChangeText), name: "refresh", object: nil) 
のviewDidLoad

でこれを貼り付ける )ビューの上にポップアップでこれを入れて、ローカル通知を使用して簡単に

3)次に、このメソッドをViewControllerのどこかに貼り付けます。

func ChangeText(){ 
DispatchQueue.main.async { 
    self.parent?.textLabel.text = "Random text" 
} 
} 
+0

これは素晴らしいです!ありがとうございました! – 128K

1

あなたはおそらくメインスレッドにテキストを設定する必要があります。

DispatchQueue.main.async { 
    self.parent?.textLabel.text = "Random text" 
} 
+0

返信いただきありがとうございます。どこに置く?ラベルを含むディスプレイボタンまたはビューコントローラでは? – 128K

+0

ここで私はあなたがpopoverコントローラからそれを設定していると思いました。だから私は親のプロパティを使用して子ビューコントローラです。私の答えを更新しました –

関連する問題