1

我正在尝试在 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;

}

4

1 回答 1

1

问题与设置根视图控制器有关,我设置了一个不存在的根视图控制器,因此我将当前视图控制器设置为根视图控制器,它解决了我的问题。

于 2013-10-30T08:16:44.143 回答