Ios 如何在模式视图关闭时获得精确的PresentingViewController
我的应用程序导航如下所示: NavigationController-->RootViewController-->Show Segue-->SomeViewController-->(Show Segue)->ParentViewController(带ContainerView) 因此,ParentViewController有一个容器视图。 此容器视图在运行时以编程方式填充,具体取决于用户选择。 因此,视图层次结构基本上如下所示: ParentViewController(带ContainerView)--(嵌入Segue)-->ContainerViewController--(自定义Segue,用于决定在运行时显示哪个子级)--> FirstChildViewController/SecondChildViewController 现在,当点击SecondChildViewController中的按钮时,我将显示一个模式视图。到目前为止,一切都很好 但是,现在我想更新SecondChildViewController中的数据。我尝试在ModalViewController中这样做:Ios 如何在模式视图关闭时获得精确的PresentingViewController,ios,objective-c,iphone,segue,uistoryboard,Ios,Objective C,Iphone,Segue,Uistoryboard,我的应用程序导航如下所示: NavigationController-->RootViewController-->Show Segue-->SomeViewController-->(Show Segue)->ParentViewController(带ContainerView) 因此,ParentViewController有一个容器视图。 此容器视图在运行时以编程方式填充,具体取决于用户选择。 因此,视图层次结构基本上如下所示: ParentViewController(带Contain
SecondChildViewController *secondChildVC = (SecondChildViewController *)self.presentingViewController;
[self dismissViewControllerAnimated:YES completion: ^{ [secondChildVC updateList]; }];
但是,我得到了以下错误:
由于未捕获异常而终止应用程序
“NSInvalidArgumentException”,原因:'-[UINavigationController
updateList]:发送到实例的无法识别的选择器
0x127e451b0'
如何解决此问题?那么,具体来说,我如何获得“真正”的presentingViewController?我知道这有点奇怪,从用户体验的角度来看,视图上有太多的堆积,但这是客户端想要实现的方式。我不确定我是否正确理解了您的问题。如果您有一个ViewController a,显示ViewController B,并且如果您希望在B被解除时调用a中的一个方法,则可以将B作为代理 在此处阅读有关协议和代表的更多信息:
我不确定我是否正确理解了你的问题。如果您有一个ViewController a,显示ViewController B,并且如果您希望在B被解除时调用a中的一个方法,则可以将B作为代理 在此处阅读有关协议和代表的更多信息:
很抱歉给您带来了一些困惑,但您几乎完全正确。我知道我可以选择协议/委托机制。但是,这个问题并不罕见。我得到的不是SecondChildViewController实例,而是作为presentingViewController的UINavigationViewController实例。有没有办法找到“真正”的presentingViewController?谢谢你的回复!!请尝试UINavigationViewController.TopViewControllerOne。。。这将给我ParentViewController,并且再次必须查找它的子对象。到目前为止,我已经实现了委托模式。很抱歉出现任何混乱,但您几乎完全正确。我知道我可以选择协议/委托机制。但是,这个问题并不罕见。我得到的不是SecondChildViewController实例,而是作为presentingViewController的UINavigationViewController实例。有没有办法找到“真正”的presentingViewController?谢谢你的回复!!请尝试UINavigationViewController.TopViewControllerOne。。。这将给我ParentViewController,并且再次必须查找它的子对象。到目前为止,我已经实现了委托模式。