0

当调用显示操作表时,我间歇性地收到以下错误。

-[UIActionSheet showInView:] 中的断言失败

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:视图!= nil”

现在在这种情况下,我没有更改屏幕。UIActionSheet 在触发本地通知时显示,并且我让观察者在此视图上调用本地方法:我将属性标记为强。当操作表被关闭时,我也将其设置为 nil。我正在为 UI 使用故事板。崩溃它是相当可重复的,也许少于 5 次尝试。(谢天谢地,我有这样的经历)。有什么建议接下来要尝试什么?我真的把头发拉出来了。我在这个主题上看到的大多数问题都指向一旦做出选择就会发生崩溃。在我的情况下,它是在演示和间歇性的。同样值得一提的是,这个特殊的视图在嵌入式导航控制器中有几个堆栈。Home>tableview>detail select>有问题的viewController。

self.actionSheet = [[UIActionSheet alloc]
                            initWithTitle:@"Select Choice" delegate:self cancelButtonTitle:@"Not Yet" destructiveButtonTitle:@"Do this Now" otherButtonTitles:nil];

[self.actionSheet showInView:self.parentViewController.tabBarController.view];
4

2 回答 2

1

根据您的代码,调用它时似乎设置self.tabBarController或未self.tabBarController.tabBar设置。

尝试使用:

[self.actionSheet showInView:self.view];

编辑:修复错误

编辑 2:使操作表显示在选项卡栏的顶部

[self.actionSheet showInView:[[UIApplication sharedApplication].delegate window]];
于 2012-10-09T22:51:10.770 回答
0

问题的答案是我没有删除 NSNotificationCenter 观察者。只有当@zsnow 推荐更改解决了崩溃但导致出现重复的 UIAlertSheet 对话框时,这一点才变得明显。

在我的特殊情况下,添加以下内容解决了我的问题。感谢大家的帮助。这些建议让我离终点线足够近。

-(void)viewWillDisappear:(BOOL)animated {


[[NSNotificationCenter defaultCenter] removeObserver:self];

}

于 2012-10-10T03:34:23.260 回答