IOS7下使用actionsheet时,有时会遇见这样的报错:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Sheet can not be presented because the view is not in a window: <UIView: 0xce7df00; frame = (0 0; 320 480); autoresize = RM+BM; layer = <CALayer: 0xce51bb0>>'
*** First throw call stack:
这种情况,是因为视图并未在窗口加载,那么我们把actionsheet加载在当前window中就可以了。
兼容IOS6下的情况,代码如下:
//解决“Sheet can not be presented because the view is not in a window” 这样的问题
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
if ([window.subviews containsObject:self.view]) {
[actionSheet showInView:self.view];
} else {
[actionSheet showInView:window];
}