当调用显示操作表时,我间歇性地收到以下错误。
断言失败 - [UIActionSheet showInView:]
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效的参数不满足:view!= nil'
现在在这种情况下,我没有更换屏幕。当本地通知被触发时,会显示UIActionSheet,并且我有一个观察者在此视图上调用本地方法:我将该属性标记为强。当行动表被解雇时,我也将其设置为零。我正在使用UI的故事板。碰撞它是相当可重复的,可能不到5次尝试。 (谢天谢地,我有这个想法)。有什么建议接下来要尝试什么?我真的把头发拉出来了。我在这个主题上看到的大多数问题都指向选择完成后发生的崩溃。在我的情况下,它是在介绍和间歇性。另外,对于它的价值,这个特殊的视图是嵌入式导航控制器中的几个堆栈。主页> tableview>详细选择> viewController有问题。到目前为止,在iOS 5.1和iOS 6的测试中也出现了同样的问题。我认为它与节目InView的目标有关。
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];
答案 0 :(得分:1)
根据您的代码,调用此代码时似乎未设置self.tabBarController
或self.tabBarController.tabBar
。
尝试使用:
[self.actionSheet showInView:self.view];
编辑:已修复错误
编辑2 :使操作表显示在标签栏上
[self.actionSheet showInView:[[UIApplication sharedApplication].delegate window]];
答案 1 :(得分:0)
问题的答案是我没有删除NSNotificationCenter观察者。只有当@zsnow推荐的更改解决了崩溃但导致出现重复的UIAlertSheet对话框时,才会显而易见。
在我的特定情况下,添加以下内容解决了我的问题。谢谢大家的帮助。这些建议让我足够接近终点线。
-(void)viewWillDisappear:(BOOL)animated {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}