警告:尝试在<mfsidemenucontainerviewcontroller>上显示<uiimagepickercontroller>,其视图不在窗口层次结构中</mfsidemenucontainerviewcontroller> </uiimagepickercontroller>

时间:2013-10-23 11:18:35

标签: ios objective-c uiimagepickercontroller

我正在尝试在iOS中加载图片选择器,它在第一次尝试时工作正常但是当我第二次执行此操作时它会给我以下警告

警告:尝试显示其视图不在窗口层次结构中!

我的选择图片的代码如下

[self startCameraControllerFromViewController:self usingDelegate:self sourceType:UIImagePickerControllerSourceTypePhotoLibrary];

,方法如下startCameraControllerFromViewController

- (BOOL) startCameraControllerFromViewController: (UIView*) controller usingDelegate: (id) delegate sourceType:(UIImagePickerControllerSourceType) sourceType{

if (([UIImagePickerController isSourceTypeAvailable:
      sourceType] == NO)
    || (delegate == nil)
    || (controller == nil))
{
    DLog(@"no is being returned");
    return NO;


}

if(_delegate != nil &&[ _delegate respondsToSelector:@selector(imagePickerOpened)]){

    [_delegate imagePickerOpened];
}

if(cameraUI==nil){

    //        [SVProgressHUD showWithStatus:@"Loading"];
    [ALERT showLoader];

    dispatch_queue_t concurrentQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(concurrentQueue, ^{
        cameraUI = [[UIImagePickerController alloc] init];

        cameraUI.sourceType = sourceType;

        cameraUI.mediaTypes=cameraUI.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeImage, nil];
        cameraUI.allowsEditing = YES;

        cameraUI.delegate = delegate;


        dispatch_async(dispatch_get_main_queue(), ^{
            [self.window.rootViewController presentModalViewController:cameraUI animated:YES];
            //[self presentModalViewController:cameraUI animated:YES ];

            [ALERT hideLoader];
        });


    });
}
else{
    cameraUI.sourceType = sourceType;
    [self.window.rootViewController presentModalViewController:cameraUI animated:YES];
    //[self presentModalViewController:cameraUI animated:YES ];
}

return YES;

}

1 个答案:

答案 0 :(得分:1)

问题是相关的设置根视图控制器我设置了一个不存在的根视图控制器所以我将我当前的视图控制器设置为根视图控制器,它解决了我的问题。