【问题标题】:UIActionSheet Invalid parameter not satisfying: view != nilUIActionSheet 无效参数不令人满意:view != nil
【发布时间】:2012-02-14 06:37:44
【问题描述】:
在导航堆栈上弹出一些视图控制器后,我收到此错误,最后我通过操作表提出问题。我得到的错误参数不满足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];
【问题讨论】:
标签:
cocoa-touch
uiview
uiviewcontroller
uinavigationcontroller
uiactionsheet
【解决方案1】:
您尝试在其中显示 UIActionSheet 的视图很可能尚未附加到窗口。在视图附加到窗口后尝试调用 showInView。假设上述代码在视图控制器实现中,请尝试在 viewDidLoad 中调用它而不是 loadView。
【解决方案2】:
我不得不 [self performSelector: withObject: afterDelay:1.] 在每次弹出之后,我猜它必须对视图的状态做一些事情。在需要显示。
【解决方案3】:
showInView 也给了我无效参数不令人满意:view != nil 异常.. 所以我尝试了[self.view addSubview action sheet];
showInView 应该在 viewDidLoad 之后调用,所以如果添加 [actionSheet showInView:self.view];在 viewDidAppear 中,它不会崩溃..
【解决方案4】:
这个错误发生在我在 Xcode 4.6.2 中的单元测试中,当它遇到应该呈现 UIActionSheet 的行时。它没有出现在旧版本的 Xcode 中。我认为这是因为类似的问题 - 在单元测试期间没有要呈现的视图。
我通过编写测试来修改基础数据然后对其进行测试来解决这个问题,而不是先显示操作表然后选择一个按钮,然后向 Apple 提交错误报告。