Container Viewを使って、表示する内容が切り替わるようなiOSアプリを作成しております。
複数ユーザーが使用できるような仕様になっており、ユーザーを切り替えると画面がリロードされ、
API通信で情報を取得し画面に再描画するような形にしたいのですが、画面がリロードされず困っています。
構成
UITabBarController > ParentViewController > ChildViewController
- 親Viewは、3つの子ViewをContainer Viewで内包している
- 更新は別のコントローラー(SelectUserViewController)で行う
- それぞれのコントローラーは更新用のメソッド(loadData())を持っている
ソースコード
SelectUserViewController
Swift
1 // 更新ボタンタップ時の処理 2 @IBAction func updateBtnTapped(_ sender: Any) { 3 let tabVc = self.presentingViewController as! UITabBarController 4 let parentVc = tabVc.selectedViewController as! ParentViewController 5 parentVc.loadData() 6 }
この場合、当然ながら親Viewはリロードできるのですが、親Viewが内包している子Viewのリロードができません。
上記と同様に下記のように記述すると「Could not cast value of type」エラーが表示されます。
SelectUserViewController
Swift
1let childVc = tabVc.selectedViewController as! ChildViewController
子ViewControllerをインスタンス化し、更新メソッドを呼ぼうと下記のように記述しても、「Unexpectedly found nil while implicitly unwrapping an Optional value」エラーが出てしまいます。
SelectUserViewController
Swift
1let childVc = self.storyboard?.instantiateViewController(withIdentifier: "childVc") as! ChildViewController 2childVc.loadData()
どのようにすれば、親View同様に子Viewもリロードできるでしょうか。
初歩的な質問ではございますが、どうぞご回答いただけますと幸いです。
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 13:55