【发布时间】:2012-06-06 03:17:53
【问题描述】:
我只是添加了 TabBarController + NavigationController。在此之前一切正常,但现在当我从模态调用presentingViewController 时,出现此错误:
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[UITabBarController tableViewListado]: 无法识别的选择器发送到实例
我得到的是“UITabBarController”,而不是接收预期的对象 (ViewController),在使用 TabBar 和 Nav 控制器时,我是否应该以某种不同的方式获取呈现控制器?
没有 TabBar/Nav 我使用的是这个:
ViewController *parentView = (ViewController *)[self presentingViewController];
[parentView something];
编辑:
只是发现如果我这样做它会起作用,但不要认为这实际上是最好的方法:
ViewController *parentView = (ViewController *)[(UINavigationController *)[((UITabBarController *)[self presentingViewController] ) selectedViewController] topViewController] ;
[parentView something];
【问题讨论】:
-
你需要在调用presentingViewController的地方添加一些代码。
-
是的,这是我同样的问题,但我之前读过,但不知道如何解决问题
-
似乎你有一个丑陋的解决方案,但我建议你检查你的导航堆栈层次结构,然后它会让你清楚地知道你需要获取什么。
-
您得到的解决方案没有错,考虑到您在视图控制器上的设计,它适用于您的情况。