UIActionSheet在iPad/而非iPhone上崩溃

UIActionSheet在iPad/而非iPhone上崩溃,iphone,cocoa-touch,ipad,ios,uiactionsheet,Iphone,Cocoa Touch,Ipad,Ios,Uiactionsheet,当我在控制台中查看时,我收到了以下消息 2010-09-18 17:04:05.284 Wasted Time[8998:207] *** Assertion failure in -[UIActionSheet showInView:], /SourceCache/UIKit_Sim/UIKit-1145.66/UIAlert.m:7073 2010-09-18 17:04:05.286 Wasted Time[8998:207] *** Terminating app due to unca

当我在控制台中查看时,我收到了以下消息

2010-09-18 17:04:05.284 Wasted Time[8998:207] *** Assertion failure in -[UIActionSheet showInView:], /SourceCache/UIKit_Sim/UIKit-1145.66/UIAlert.m:7073 2010-09-18 17:04:05.286 Wasted Time[8998:207] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: view != nil' 2010-09-18 17:04:05.286 Wasted Time[8998:207] Stack: ( 42272848, 43430700, 42010379, 811796, 3796273, 3862560, 9631, 3616645, 3688229, 3682846, 3690662, 3686119, 4983946, 71264534, 71263781, 71207378, 71206706, 3003734, 3030334, 3011831, 3043800, 51265916, 41552028, 41547944, 3002913, 3036018, 8314 ) terminate called after throwing an instance of 'NSException'
它在iPhone和iPhone模拟器中运行良好,但在iPad模拟器中崩溃。

错误消息显示:

无效参数不满足:视图!=零

从这一行可以看出:

[actionSheet showInView:self.view];
既然你说这在iPhone上有效,但在iPad上不起作用,那就意味着iPad到达这一行的代码路径可能与iPhone到达这一行的代码路径不同。这意味着可能没有为iPad设置视图控制器的
view
属性

我猜:您忘了在Interface Builder中为该视图控制器正在使用的iPad版xib连接
视图
插座。

请执行以下操作:

[self performSelectorOnMainThread:@selector(choosePhoto) withObject:nil waitUntilDone:NO];

-(void)choosePhoto
{

    UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@""
                                                  delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil
                                         otherButtonTitles:@"Take Photo", @"Choose from gallery", nil];
    actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    actionSheet.tag = 1;
    [actionSheet showInView:self.view];
    [actionSheet release];
}

为我工作

我也有这个问题,但我使用的是
[actionSheet showInView:[self.view window](修复另一个只有一半取消按钮可选择的错误)

现在我有条件地将其更改为
[actionSheet showInView:self.view]在iPad上


我发现最好也不要在iPad上使用UIActionSheetStyleBlack半透明的样式–iPad有自己的样式,设置此样式似乎会添加取消按钮(默认情况下,iPad上不会显示该按钮)。

我认为问题在于视图尚未出现。把它放在ViewDidExample中:它应该工作得很好。

对于像我这样的人来说,使用UIActionSheet可能与最初的问题略有不同,但在iPad上仍然失败,我一直在使用:

[actionSheet showFromRect:m_view.bounds inView:m_view animated:YES];
[actionSheet release];
…在iPhone上工作,但在iPad上失败

此示例适用于两台设备上的“我的特定应用”:

[actionSheet showInView:m_view];
[actionSheet release];

你好,大卫这是个老问题,但我今天遇到了同样的问题。 我有一个iViewController的xib文件,这是iPhone和iPad所共有的,
UIActionSheet
上的
showInView
方法导致iPad应用程序崩溃

原来是在
viewdideappear
中调用
showInView
,而不是
viewdideload
为我解决了这个问题。在iPad上调用viewDidLoad时,可能还没有建立所有IB连接


(我的UIViewController被推到了一个UINavigationController上,所以我想知道动画时间的增加是否是导致整个问题的原因?

感谢您的快速响应。这很有意义,但对于iPad版本,我没有单独的NIB文件。在以前的应用程序版本中,我使用了命令->项目,升级c当前iPad的目标。您的错误消息说断言是从
[UIActionSheet showInView:]
因为
self.view
nil
。为什么是
nil
?从那里开始,一步步向上。谢谢!我已经为我的TabView控制器中的3个TabView中的每一个创建了新的XIB。.允许我创建一个更好的iPad界面。.你的问题让我找到了正确的方向…但是当我为iPad版本,并将其连接到主窗口-iPad.xib(TabViewController),我现在得到了一个新的/不同的运行时错误,将发布一个新的问题。好的,现在我得到了工作…接线错误。我回到了上面的showInView错误。这可能是一个新手问题,我如何工作我的方式备份?我已经通过了调试器,我不知道如何看到self.view指向哪里。好的..我想ed out-[actionSheet showInView:self.parentViewController.view];谢谢..我已经能够通过使用父指针解决问题。将标记此问题以备将来检查。嗯..这在最新版本的xCode上似乎不起作用…应用程序陷阱与我的上述[actionSheet showInView:self.parentViewController.view]解决方案一起使用;这两个解决方案都列出了…回到绘图板上…好的..我想尝试一下,我发现在最新版本上我的.parentViewController技巧不起作用…应用程序每次都会崩溃…注意:使用窗口会导致iPhone横向不正确地显示操作表
[actionSheet showInView:m_view];
[actionSheet release];