Ios 在查看控制器生命周期时显示UIImagePickerController?
当用户在我的应用程序中点击相机选项卡拍照时,我想立即展示一个Ios 在查看控制器生命周期时显示UIImagePickerController?,ios,iphone,uiviewcontroller,uiimagepickercontroller,modalviewcontroller,Ios,Iphone,Uiviewcontroller,Uiimagepickercontroller,Modalviewcontroller,当用户在我的应用程序中点击相机选项卡拍照时,我想立即展示一个UIImagePickerController(类似于Instagram等许多拍照应用程序)。目前,我有一个名为CameraViewController的VC,它显示从UIImagePickerController拍摄的照片,并且在视图中将出现CameraViewController的功能,当我检测到没有拍摄照片时,我会以模式显示ImagePickerController 虽然这在大多数情况下都有效,但我注意到,有时我会遇到一个例外,说
UIImagePickerController
(类似于Instagram等许多拍照应用程序)。目前,我有一个名为CameraViewController
的VC,它显示从UIImagePickerController拍摄的照片,并且在视图中将出现CameraViewController
的功能,当我检测到没有拍摄照片时,我会以模式显示ImagePickerController
虽然这在大多数情况下都有效,但我注意到,有时我会遇到一个例外,说:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“应用程序试图以模态方式呈现活动控制器。”
根据这里一些SO问题的建议,我还尝试在viewdide
中演示控制器。然而,使用viewdideappear
,模式图像选择器永远不会被取消,并且我不断收到错误“开始/结束外观转换的不平衡调用”
我的问题是:
我目前正在为用户演示ImagePickerController,以便用户拍照,然后在拍照后将其关闭。这通常是使用最可靠/无问题的ImagePickerController进行操作的方式
<> LI>在视图生命周期中,我还应该考虑将IVaPixError控制器设为什么样的预期效果?
这是我的密码:
在视图中将出现
BOOL modalPresent = (BOOL)(self.presentedViewController);
if (!appDelegate.imageStorageDictionary[@"picture1"]){
if (modalPresent == NO){
[self presentViewController:self.imagePickerController animated:NO completion:nil];
}
}
在imagePickerController:(UIImagePickerController*)中,picker完成了与info:(NSDictionary*)info的媒体链接
//Other lines omitted
if (![[self imagePickerController] isBeingDismissed])
[self dismissViewControllerAnimated:NO completion:nil];
我不太了解您关于-viewwillbeen
的问题,但您必须知道,-viewwillbeen
会被多次调用。原因是,第一个调用将在加载viewController
并且viewDidLoad
和expect时像往常一样被调用,第二个调用将在显示modalViewController(imagePickerController)时进行
当它再次被解除时,视图将出现
将被调用,因为viewController的视图即将出现
第二,当用户点击摄像头按钮时,您希望显示摄像头的功能,请执行以下操作:
if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
if(myPicker)
{
[myPicker release];
myPicker = nil;
}
myPicker = [[UIImagePickerController alloc] init];
[self presentViewController:myPicker animated:YES completion:NULL];
}
else
{
UIAlertView *altnot=[[UIAlertView alloc]initWithTitle:@"Camera Not Available" message:@"Camera Not Available" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
altnot.tag=103;
[altnot show];
[altnot release];
}
用于拾取已捕获的图像
-(无效)选择SealReadyCapturedPhoto
{
}
注意:每次使用之前分配的picker对象时,我都会释放它,但这不是必需的。您可以使用我的选择器的唯一一个实例,不要将其标记错误。在viewController
内部使用imagePicker控制器
是绝对好的,不会有任何伤害。。如果您多次显示并关闭modalViewController,则每次关闭时都会调用ViewWide
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
if(myPicker)
{
[myPicker release];
myPicker = nil;
}
myPicker = [[UIImagePickerController alloc] init];
myPicker.delegate = self;
myPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
myPicker.allowsEditing = NO;
}
[self presentViewController:myPicker animated:YES completion:NULL];