我的應用程序導航是像下面確切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被竊聽模態的視圖。一切都很好,直到這一點。
但是,現在我想更新SecondChildViewController中關於解除ModalViewController的數據。我嘗試做這樣的ModalViewController:
SecondChildViewController *secondChildVC = (SecondChildViewController *)self.presentingViewController;
[self dismissViewControllerAnimated:YES completion: ^{ [secondChildVC updateList]; }];
不過,我收到以下錯誤:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController updateList]: unrecognized selector sent to instance 0x127e451b0'
我怎樣才能解決這個問題?所以,具體來說,我怎樣才能得到「真正」呈現ViewController?我知道它有點怪異的導航,並且從用戶體驗的角度來看,堆疊視圖太多,但這是客戶想要實現的方式。
對不起,有任何困惑,但你說得對。我知道我總是可以使用協議/委託機制。但是,這個問題並不罕見。而不是SecondChildViewController實例,我得到UINavigationViewController實例,作爲presentsViewController。有什麼方法可以找到「真正的」presentationViewController嗎?感謝您的回覆!! –
嘗試使用UINavigationViewController.topViewController – Pankaj
不能...那會給我ParentViewController,並且再次需要查找它的子項。截至目前,我已經實施了代表模式。 –