マイアプリのナビゲーションは以下のようなものです却下正確なPresentingViewControllerを取得する方法:は、モーダルビューが
NavigationController ---> RootViewController --(Show Segue)-> SomeViewController --(Show Segue)-> ParentViewController (With ContainerView)
ので、ParentViewControllerはコンテナビューを持っています。 このコンテナビューは、ユーザーの選択に応じて、実行時にプログラムによって作成されます。 だから、基本的にビュー階層は、このようなものです:
ParentViewController (With ContainerView) ---(Embed Segue) --> ContainerViewController --(Custom Segue, for deciding which child to show at runtime) ---> FirstChildViewController/SecondChildViewController
さて、私はボタンがSecondChildViewControllerにタップされるモーダルビューを表示します。この点まではすべてが問題ありません。
しかし、今度は、ModalViewControllerの終了時にSecondChildViewControllerのデータを更新したいと思います。私はこの問題を解決するにはどうすればよい
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController updateList]: unrecognized selector sent to instance 0x127e451b0'
:私は次のエラーを取得しています、
SecondChildViewController *secondChildVC = (SecondChildViewController *)self.presentingViewController;
[self dismissViewControllerAnimated:YES completion: ^{ [secondChildVC updateList]; }];
しかし:私はModalViewControllerでこのようにそれをやってみては?具体的には、どのようにして "本当の" presentingViewControllerを得ることができますか?私はちょっと変わったナビゲーションを知っていますし、ユーザーエクスペリエンスの観点から見るとビューのスタッキングが多すぎますが、これがクライアントの実装方法です。
ご迷惑をおかけして申し訳ありませんが、ほとんど正しいです。私は常にプロトコル/委任の仕組みに行くことができることを知っています。しかし、この問題はあまり一般的ではありません。 SecondChildViewControllerインスタンスの代わりに、私はpresentingViewControllerとしてUINavigationViewControllerインスタンスを取得しています。 "本当の" presentingViewControllerを見つける方法はありますか?お返事をありがとうございます!! –
UINavigationViewController.topViewControllerを試してください – Pankaj
いいえ...それは私にParentViewControllerを与え、再びその子を探す必要があります。私は今のところデリゲートパターンを実装しています。 –