如何在viewDidLoad上启动iPhone Camera?

时间:2009-08-31 04:34:21

标签: iphone uikit uiviewcontroller camera

加载我的视图时似乎无法启动相机。我最终让用户必须找到并按下屏幕上的按钮才能加载相机(冗余)。我怎样才能做到这一点?代码如下:

// 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所引用)

2 个答案:

答案 0 :(得分:4)

您应该在viewWillAppear:或viewDidAppear中执行此操作:如果第一个不起作用。尝试在viewDidLoad中执行此操作将无法工作,因为在首次创建视图后调用它,并且视图不是该点上任何其他内容的子视图。据我所知,为了在self上调用presentModalViewController,视图必须在某个级别显示在UIWindow中。

我刚注意到的另一件事;您的代码会泄漏内存,具体取决于您声明imgPicker属性的方式。如果它是使用retain而不是assign来声明的,那么除非你在某个地方明确地释放它,否则picker将始终存在于内存中。在这种情况下,您应该在将init'd对象分配给属性时自动释放它。

答案 1 :(得分:0)

当您在视图中调用当前模态视图时,它似乎没有执行此操作。你可以在调用[super viewDidload]之后尝试使用2秒计时器,该计时器会将选择器视图推入或类似。