UIActionSheet无效参数不满足:view!= nil

时间:2012-02-14 06:37:44

标签: cocoa-touch uiview uiviewcontroller uinavigationcontroller uiactionsheet

我在导航堆栈上弹出一些视图控制器后出现此错误,最后我通过操作表询问问题。我得到的错误参数不满足view != nil,这让我抓狂,因为它在调用操作表之前检查时不是nil值。

   if (self.view != nil) {
            NSLog(@"view is not nil");
        }
UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"title" delegate:nil cancelButtonTitle:@"cancel" destructiveButtonTitle:@"destructive" otherButtonTitles:nil];
    [actionSheet showInView:self.view];

4 个答案:

答案 0 :(得分:5)

您尝试显示UIActionSheet的视图很可能尚未附加到窗口。将视图附加到窗口后尝试调用showInView。假设上面的代码在视图控制器实现中,请尝试在viewDidLoad而不是loadView中调用它。

答案 1 :(得分:1)

我不得不去[self performSelector:withObject:afterDelay:1。]每次弹出后,我猜它必须对视图的状态做些什么。需要显示。

答案 2 :(得分:1)

showInView 给了我无效参数不满意:view!= nil 异常..所以我尝试了[self.view addSubview action sheet];

应该在viewDidLoad之后调用showInView,所以如果添加[actionSheet showInView:self.view];在viewDidAppear中,它不会崩溃..

答案 3 :(得分:0)

当Xcode 4.6.2中的单元测试遇到应该呈现UIActionSheet的行时,会发生此错误。它在旧版本的Xcode中没有出现。我认为这是因为类似的问题 - 在单元测试期间没有任何意见。

我通过编写测试来修改底层数据然后测试它,而不是提供一个操作表然后选择一个按钮,并向Apple提交了一个错误报告。