问题底部的更新
以下是我要做的事情:
主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!
答案 0 :(得分:0)
viewDidLoad
不适合这样做。您可以尝试viewWillAppear
,但这可能还为时过早。否则,viewDidAppear
。