繁体   English   中英

presentViewController总是获取UITabBarController

[英]presentingViewController getting always UITabBarController

我只是添加TabBarController + NavigationController。 在此之前一切都还可以但是现在当我从一个模态调用presentViewController时,我收到此错误:

由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UITabBarController tableViewListado]:无法识别的选择器发送到实例

而不是接收预期的对象(ViewController)我得到“UITabBarController”,我是否应该在使用TabBar和Nav控制器时以不同的方式获得呈现控制器?

没有TabBar / Nav,我使用了这个:

ViewController *parentView = (ViewController *)[self presentingViewController]; 

[parentView something];

编辑:

只是发现如果我这样做它有效,但不要认为这实际上是最好的方法:

ViewController *parentView = (ViewController *)[(UINavigationController *)[((UITabBarController *)[self presentingViewController] ) selectedViewController] topViewController]  ;

[parentView something];

我的答案副本来自这个问题

来自Matt Neuburg编程的iOS 6

在iPad上,当呈现的视图控制器的modalPresentationStyle是UIModalPresentationCurrentContext时,必须决定哪个视图控制器应该是呈现的视图控制器的presentViewController。 这将确定将由所呈现的视图控制器视图替换的视图。 此决定涉及另一个UIViewController属性,definePresentationContext(BOOL)。 从发送了presentViewController:animated:completion:的视图控制器开始,我们走向父视图控制器链,寻找其definePresentationContext属性为YES的控制器。 如果我们找到一个,就是那个; 它将是presentsViewController,它的视图将被呈现的视图控制器视图所取代。 如果我们找不到,那么就像所呈现的视图控制器的modalPresentationStyle是UIModalPresentationFullScreen一样。

TL; DR
1.集definesPresentationContext为true期望presentingViewController
2.组modalPresentationStyleUIModalPresentationCurrentContext期望presentedViewController

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM