以模态方式呈现UIImagePickerController时出错
我有一个奇怪的问题,在iOS 6应用程序中以模态方式呈现UIImagePickerController
。 XCode
给我这个错误:
Warning: Attempt to present <UIImagePickerController: 0x1e025040> on <UINavigationController: 0x1d51ce00> whose view is not in the window hierarchy!
我在我的AppDelegate
有以下窗口层次结构:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window = window; firstViewController = [[SGNewMailViewController alloc] init]; navController = [[UINavigationController alloc] initWithRootViewController:firstViewController]; self.window.rootViewController = firstViewController; [self.window makeKeyAndVisible]; return YES; }
在我的SGNewMailViewController
我提出了一个新的UIView
,它是这个代码中的SGFoldingAttachmentView
类的成员:
- (void)choosePhotoPressed { SGNewMailViewController *mailVC = [((SGAppDelegate *)[UIApplication sharedApplication].delegate).firstViewController.navigationController.viewControllers lastObject]; [mailVC displayCameraRoll]; }
最后,这是我的SGNewMailViewController
displayCameraRoll
方法:
- (void)displayCameraRoll { if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil]; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:nil]; } }
那么可能是什么问题呢? 它是从另一个类呈现的自定义视图吗? 我应该如何解决它? 提前致谢!
使UINavigationController成为窗口的根视图控制器。 这应该解决这个问题
self.window.rootViewController = navController;