【问题标题】:App crashes frequently at time when UIActionSheet would be presented应用程序在显示 UIActionSheet 时经常崩溃
【发布时间】:2012-10-10 11:34:23
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您提供的UIActionSheet 代码与您发布的崩溃不一致。您正在使用 showFromTabBar ,而崩溃表明您正在使用 showInView
  • 你是对的,我已经更新,所以它匹配。我也尝试了以前的也崩溃了。

标签: ios ios5 ios6


【解决方案1】:

根据您的代码,调用它时似乎没有设置 self.tabBarControllerself.tabBarController.tabBar

尝试使用:

[self.actionSheet showInView:self.view];

编辑:修复错误

编辑 2: 使操作表显示在标签栏的顶部

[self.actionSheet showInView:[[UIApplication sharedApplication].delegate window]];

【讨论】:

  • 这给了我一个编译器警告,指出不兼容的指针类型将 Uiview * 发送到 UITabBar * 类型的参数
  • @JimHankins 请原谅我犯了那个错误,它已被纠正。
  • 所以实际上这就是我以前所拥有的,但这会导致底部按钮的可点击区域出现问题。我就是这样走到这一步的。上面的方法不会崩溃,但由于存在 tabBar 而不是正确的。
  • @JimHankins 又更新了,试试看。
  • 所以这似乎已经解决了崩溃问题并且触摸区域是正确的,但是现在我每次连续以这种方式调用它,我都会显示 N+1 个 ActionSheets。我尝试在 index 方法的单击按钮上将 self.actionsheet.delegate 设置为 nil 并将 self.actionsheet 设置为 nil 。这不起作用,在 viewDidDisappear 中也是如此(因为我在两次尝试之间弹出视图)。仍然复制操作表。
【解决方案2】:

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

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

-(void)viewWillDisappear:(BOOL)animated {


[[NSNotificationCenter defaultCenter] removeObserver:self];

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多