加载我的视图时似乎无法启动相机。我最终让用户必须找到并按下屏幕上的按钮才能加载相机(冗余)。我怎样才能做到这一点?代码如下:
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.allowsImageEditing = NO;
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[super viewDidLoad];
[self presentModalViewController:self.imgPicker animated:YES];
}
更新
将上面的代码放入-viewDidAppear:(BOOL)动画允许相机启动,但应用程序立即崩溃,最后一个例程是[UIWindowController transitionViewDidComplete:fromView:toView]; (如Debugger所引用)
答案 0 :(得分:4)
您应该在viewWillAppear:或viewDidAppear中执行此操作:如果第一个不起作用。尝试在viewDidLoad中执行此操作将无法工作,因为在首次创建视图后调用它,并且视图不是该点上任何其他内容的子视图。据我所知,为了在self上调用presentModalViewController,视图必须在某个级别显示在UIWindow中。
我刚注意到的另一件事;您的代码会泄漏内存,具体取决于您声明imgPicker属性的方式。如果它是使用retain而不是assign来声明的,那么除非你在某个地方明确地释放它,否则picker将始终存在于内存中。在这种情况下,您应该在将init'd对象分配给属性时自动释放它。
答案 1 :(得分:0)
当您在视图中调用当前模态视图时,它似乎没有执行此操作。你可以在调用[super viewDidload]之后尝试使用2秒计时器,该计时器会将选择器视图推入或类似。