我正在尝试创建一个弹出式摄像头视图但是我收到此错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIPopoverController _commonPresentPopoverFromRect:inView:permittedArrowDirections:animated:]: Popovers cannot be presented from a view which does not have a window.'
我正在调用我的cameraViewController
- (void) cameraButtonSelected
{
CameraViewController *cameraViewController = [[CameraViewController alloc] init];
cameraViewController.view.frame = CGRectMake(100.0, 100.0, 200.0, 150.0);
[self.view addSubview:cameraViewController.view];
}
这是我试图创建的ViewController viewDidLoad方法
- (void)viewDidLoad
{
[super viewDidLoad];
if(self.view.window!=nil)
[objPopView presentPopoverFromRect:self.view.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
objPopView = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[objPopView presentPopoverFromRect:CGRectMake(842, 163, 0, 0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionRight
animated:YES];
}
我看到两个问题。
viewDidLoad
意味着你的观点尚未出现在窗口中。它只是意味着视图存在。等到viewWillAppear:
或viewDidAppear:
这样做。这是视图现在在界面中的标志。您可能必须使用条件才能在第一次执行此操作。if(self.view.window!=nil)
[objPopView presentPopoverFromRect:self.view.frame inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
你还没有定义objPopView
,另外如果满足这个条件,你将对弹出窗口进行此演示,然后继续进行另一个弹出窗口的演示。