UIActionSheet崩溃的iPad /不是iPhone
当我看在控制台中我得到这个消息UIActionSheet崩溃的iPad /不是iPhone
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'
的代码如下:
- (void)viewDidLoad {
BOOL continueYesNo;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
continueYesNo = [prefs boolForKey:@"keyContinueMeeting"];
if (continueYesNo) {
NSString *message_continue = [[NSString alloc] initWithFormat:@"Do you want to Continue the Prior Meeting"];
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:message_continue
delegate:self
cancelButtonTitle:@"Reset"
destructiveButtonTitle:@"Continue"
otherButtonTitles:nil];
[actionSheet showInView:self.view];
[actionSheet release];
[message_continue release];
}
}
运行良好无论是在iPhone和在iPhone模拟器,但在iPad模拟器中崩溃。
错误消息说:
无效的参数并不令人满意:查看=零
从该行可能的:
[actionSheet showInView:self.view];
既然你说这个工程对iPhone,但而不是iPad,这意味着iPad进入这条线所需的代码路径可能与iPhone到达这条线所需的代码路径不同。这意味着视图控制器的view
属性可能没有为iPad设置。
我的猜测:你忘了在Interface Builder中为这个视图控制器正在使用的xib的iPad版本连接view
插座。
这样做:
[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];
}
为我工作
谢谢..我已经能够通过使用父指针来解决。将这个标记为将来的检查。 – 2010-09-28 18:43:08
好吧..这似乎没有工作的最新版本的xCode ...应用陷阱与我的[actionSheet showInView:self.parentViewController.view];我的上述解决方案;这两个解决方法列出...回到绘图板... – 2011-07-10 21:03:15
我也有这个问题,但我是用(修复另一个bug,其中仅取消按钮一半是可选)。
现在我有条件地将其更改为iPad上的[actionSheet showInView:self.view];
。
我发现最好不要在UIActionSheetStyleBlackTranslucent上的iPad风格 - iPad有它自己的风格,并设置这似乎添加取消按钮(默认情况下,在iPad上没有显示)。
行..会给这个尝试,我发现最新的构建我的.parentViewController技巧不工作...应用程序只是每次崩溃.. – 2011-07-10 20:55:05
注意:使用该窗口会导致iPhone横向显示错误的操作单 – amleszk 2013-02-23 06:24:58
我相信问题是视图还没有出现。把它放在viewDidAppear中:它应该可以正常工作。
对于那些像我一样可以使用UIActionSheet略有不同比原来的问题,但在iPad上仍然失败,我一直在使用:
[actionSheet showFromRect:m_view.bounds inView:m_view animated:YES];
[actionSheet release];
...这适用于iPhone,但无法在iPad上。
此示例适用于我的特殊应用在两台设备上:
[actionSheet showInView:m_view];
[actionSheet release];
的问候,大卫
这是一个老问题,但我今天遇到同样的问题。 我有一个适用于iPhone和iPad的UIViewController的xib文件,UIActionSheet
上的showInView
方法导致iPad应用程序崩溃。
原来打电话给showInView
在viewDidAppear
,而不是viewDidLoad
给我修好了。也许所有的IB连接都不是在viewDidLoad在iPad上被调用的时候完成的。
(我的UIViewController正在推到一个UINavigationController,所以我不知道,如果增加的动画时间是什么导致了整个issue_的快速反应
感谢,这使得有很大的意义,但是我没有单独的NIB文件的iPad版本在应用程序的先前版本中,我使用了命令 - >项目,升级当前目标的iPad。 – 2010-09-18 21:28:02
那么,你的错误信息表明一个断言是从'[UIActionSheet showInView:]'提出的,因为'self.view'是'nil'。为什么它是'nil'?从那里开始并工作。 – 2010-09-18 21:46:37
谢谢!我为TabView控制器中的3个TabView中的每一个创建了新的XIB。允许我创建一个更好的iPad界面..你的问题让我朝着正确的方向前进......然而,当我为iPad版本创建新的XIB并将它们连接到mainwindow-ipad.xib(TabViewController)时,我现在得到一个新的/不同的运行时错误将为此发布一个新问题。 – 2010-09-18 23:42:36