Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在查看控制器生命周期时显示UIImagePickerController?_Ios_Iphone_Uiviewcontroller_Uiimagepickercontroller_Modalviewcontroller - Fatal编程技术网

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];