当我在控制台中查看时,我收到此消息
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模拟器中崩溃。
答案 0 :(得分:5)
错误消息显示:
无效参数不满足:view!= nil
可能来自这条线:
[actionSheet showInView:self.view];
既然你说它适用于iPhone但不适用于iPad,这意味着iPad进入此行所需的代码路径可能与iPhone到达此行所需的代码路径不同。这意味着可能没有为iPad设置视图控制器的view
属性。
我的猜测:您忘记在Interface Builder中连接此视图控制器正在使用的xib的iPad版本的view
插座。
答案 1 :(得分:3)
我也有这个问题,但我使用的是[actionSheet showInView:[self.view window]];
(修复了另一个错误,只有一半的取消按钮可以选择)。
现在我有条件地将其更改为iPad上的[actionSheet showInView:self.view];
。
我发现最好不要在iPad上使用UIActionSheetStyleBlackTranslucent的风格 - iPad有它自己的风格,设置这似乎添加了取消按钮(默认情况下在iPad上没有显示)。
答案 2 :(得分:0)
这样做:
[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];
}
为我工作
答案 3 :(得分:0)
我认为问题是视图还没有出现。把它放在viewDidAppear中:它应该可以正常工作。
答案 4 :(得分:0)
对于像我这样可能使用UIActionSheet的人与原始问题略有不同,但仍然在iPad上失败,我一直在使用:
[actionSheet showFromRect:m_view.bounds inView:m_view animated:YES];
[actionSheet release];
...适用于iPhone但在iPad上失败。
此示例适用于我在两个设备上的特定应用:
[actionSheet showInView:m_view];
[actionSheet release];
问候,大卫
答案 5 :(得分:0)
这是一个老问题,但我今天遇到了同样的问题。
我有一个UIViewController的xib文件,这是iPhone和iPad常见的,showInView
上的UIActionSheet
方法导致iPad应用程序崩溃。
原告在showInView
中调用了viewDidAppear
,而不是viewDidLoad
为我修复了它。也许所有的IB连接都不是在iPad上调用viewDidLoad时制作的。
(我的UIViewController被推到UINavigationController上,所以我想知道增加的动画时间是否是导致整个问题的原因_