親ViewControllerが表示される直前に呼ばれるviewWillAppear(_:)
を親ViewControllerでoverrideして、そこでrefreshするのが簡単に再描写する方法のうちの一つです。
ただしこのviewWillAppearはviewDidLoad()
の直後にも呼び出される、つまりアプリが起動した直後でも呼び出されるのでrefresh関数はそのことを考慮して書く等の工夫も必要です。
※質問に自分の書いたコードがないので名前はこちらで任意に設定しています。間違えないようにしてください。
swift
1ParentViewController: UIViewController { //自分の書いているコードの親ViewControllerに当てはめてください
2
3 override func viewWillAppear(_ animated: Bool) {
4 super.viewWillAppear(animated)
5 refresh()
6 }
7
8 func refresh() {
9 //再描写するコードを記述
10 }
あとはStoryboard上でViewControllerをデザインしてるならParentViewControllerのStoryboardIDを割り当てて(show the identity inspectorにStoryboardIDを割り当てる欄があります。show the identity inspectorが分からなければ検索してください。言葉で説明するより早いです)、コード上でParentViewControllerを呼び出します。今回割り当てたStoryboardIDはParentViewControllerです。
swift
1class ChildViewController: UIViewController {
2 @IBAction func dissmissButton(_ sender: UIButton) {
3 dismiss(animated: true, completion: nil)
4 guard let parent = storyboard?.instantiateViewController(withIdentifier: "ParentViewController") as? ParentViewController else {
5 fatalError()
6 }
7 parent.refresh()
8 }
9}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/24 11:57 編集