如何从呈现的视图控制器中打开UIImagePickerController?

时间:2012-02-24 18:48:59

标签: ios

问题底部的更新

以下是我要做的事情:

主ViewController打开一个新的ViewController(我不想要导航栏,所以我必须这样做吗?)然后打开相机。

在主视图控制器中,按下按钮调用此按钮:

CameraProcessViewController *controller = [[CameraProcessViewController alloc] initWithNibName:@"CameraProcessViewController" bundle:nil];

[self presentModalViewController:controller animated:NO];

这会打开下一个控制器。在viewDidLoad方法中的下一个控制器中,我有:

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
    [imagePicker setDelegate: self];
    [imagePicker setAllowsEditing:NO];

    [self presentModalViewController:imagePicker animated:YES];

    NSLog(@"Has camera");
} else {
    NSLog(@"Has no camera");
}

我已经尝试过presentModalViewController和presentViewController以及主视图控制器和这个子视图之间的两者的每个组合,但是相机永远不会打开。当我将摄像机代码移动到主视图控制器时,它打开正常。

我看了看,我找不到任何说这就是为什么的事。

谢谢!

更新 我发现在viewDidLoad方法中我可以这样称呼:

[self performSelector:@selector(openCamera) withObject:nil afterDelay:0];

它加载得很好。这没关系,还是不推荐这个?看起来有点hacky!

1 个答案:

答案 0 :(得分:0)

viewDidLoad不适合这样做。您可以尝试viewWillAppear,但这可能还为时过早。否则,viewDidAppear