“应用程序试图呈现一个主动控制器”?
我刚碰到一个崩溃,显示一个NSInvalidArgumentException
这个消息在一个应用程序,这是以前没有这样做。
应用程序尝试以模态方式呈现活动控制器UITabBarController:0x83d7f00。
我有一个UITabBarController
,我在AppDelegate
创build,并给它的UIViewControllers
数组。
其中之一,我想模仿时,点击它。 我通过实现委托方法做到了这一点
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
如果该视图控制器是我想要模态呈现的类的类,那么我返回NO并执行
[tabBarController presentModalViewController:viewController animated:YES];
现在我得到了这个错误,这似乎意味着你不能以模态方式呈现一个视图控制器,在其他地方(在tabbar中…)我应该说我在XCode 4.2开发者预览版7,所以这是iOS 5(我知道的NDA,但我想我没有给任何禁止的细节)。 我目前还没有XCode安装来testing这是否会崩溃编译对iOS4的SDK,但我几乎完全肯定它没有。
我只想问问有没有人遇到过这个问题或有什么build议
假设你有三个视图控制器像这样实例化:
UIViewController* vc1 = [[UIViewController alloc] init]; UIViewController* vc2 = [[UIViewController alloc] init]; UIViewController* vc3 = [[UIViewController alloc] init];
你已经将它们添加到这样的标签栏:
UITabBarController* tabBarController = [[UITabBarController alloc] init]; [tabBarController setViewControllers:[NSArray arrayWithObjects:vc1, vc2, vc3, nil]];
现在你正在尝试做这样的事情:
[tabBarController presentModalViewController:vc3];
这会给你一个错误,因为该选项卡栏控制器在你给它的视图控制器上有一个死抓地力。 您可以将其添加到标签栏上的视图控制器数组中,或者不能以模态方式显示它。
苹果希望你以某种方式对待他们的用户界面元素。 这大概是埋在人类接口指南的某个地方,因为“不要这样做,因为我们并不希望你永远不想这样做”。
我也有同样的问题。 我试图在解散之后呈现视图控制器。
[self dismissModalViewControllerAnimated:YES];
当我试图做到没有animation,它完美的作品,所以问题是控制器还活着。 我认为最好的解决scheme是使用dismissViewControllerAnimated:completion:
用于iOS5
我有同样的问题,我解决了。 你可以试试这个代码:
[tabBarController setSelectedIndex:1]; [self dismissModalViewControllerAnimated:YES];
只要删除
[tabBarController presentModalViewController:viewController animated:YES];
并保持
[self dismissModalViewControllerAnimated:YES];