テクノモンキーのアプリ開発日記

テクノモンキーの開発ブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsやアプリ開発に役立つ情報を発信します。

【iOSアプリ開発】モーダルビューを閉じるタイミングで親のビューを更新する方法

https://i-cdn.phonearena.com/images/article/100355-image/Bizarre-chapter-in-Apple-iPhone-history-ends-with-iOS-11.2-update.jpg

モーダルビューを閉じるタイミングで親のビューを更新する方法に関するメモ。

今作っている日記アプリで、投稿画面の投稿完了後、画面を閉じるタイミングでカレンダーの表示を更新したい時がありました。



モーダルを閉じるタイミングで親を更新する方法


モーダルで表示した画面を閉じるタイミングで親のViewControllerを更新するには、

UIViewControllerの「presentingViewController」を使えば良さそうです。

presentingViewController - UIViewController | Apple Developer Documentation



親側のViewControllerで更新用のメソッドを用意しておいて、


//ParentViewController

func updateView(){
    //表示の更新
    loadListData()
    self.calendar.reloadData()
}


子(モーダル表示側)のViewControllerで親を取得して親のメソッドを呼び出します。


//ChildViewController

 //親のViewControllerを取得して、メソッドを呼び出す
 let parentVC = self.presentingViewController as! ParentViewController
 parentVC.updateView()
 //自分を閉じる
 self.dismiss(animated: true, completion: nil)


「presentingViewController」を使えば親のViewControllerのメソッドや、パラメータも取得できるので、他にも色々使い道ありそうですね。