gpt4 book ai didi

objective-c - "Application tried to present modally an active controller"?

转载 作者:IT老高 更新时间:2023-10-28 11:20:35 27 4
gpt4 key购买 nike

我刚刚遇到一个崩溃,显示 NSInvalidArgumentException 并在之前没有这样做的应用程序上显示此消息。

Application tried to present modally an active controller UITabBarController: 0x83d7f00.

我有一个 UITabBarController 我在 AppDelegate 中创建并给它一个 UIViewControllers 数组。

其中一个我想在点击它时以模态方式呈现。我通过实现委托(delegate)方法做到了这一点

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

如果该 View Controller 属于我要以模态方式呈现的 View Controller ,则返回 NO 并执行

[tabBarController presentModalViewController:viewController animated:YES];

现在我得到了那个错误,这似乎意味着你不能以模态方式呈现一个在其他地方(在标签栏......)处于事件状态的 View Controller 我应该说我在 XCode 4.2 Developer Preview 7 上,所以这是 iOS 5(我知道 NDA,但我认为我没有提供任何禁止的细节)。我目前没有安装 XCode 来测试针对 iOS4 SDK 编译是否会崩溃,但我几乎完全可以肯定它不会。

我只想问有没有人遇到过这个问题或者有什么建议

最佳答案

假设您像这样实例化了三个 View Controller :

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];

这会给你一个错误,因为选项卡栏 Controller 对你给它的 View Controller 有一个死锁。您可以不将其添加到选项卡栏上的 View Controller 数组中,也可以不以模态方式呈现。

Apple 希望您以某种方式对待他们的 UI 元素。这可能隐藏在人机界面指南中的某个地方,即“不要这样做,因为我们不希望您这样做”。

关于objective-c - "Application tried to present modally an active controller"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429014/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com