我有一个Root View Controller,我可以从中进入下一个场景。这个新的View Controller提供了一个UIImagePickerController并在viewDidLoad中启动时选择前置摄像头:
cameraUI.cameraDevice=UIImagePickerControllerCameraDeviceFront;
这样可行,因此选择并显示前置摄像头。我拍了一张照片,然后去了下一个场景。然后我退出并返回Root View Controller。我再次进入下一个场景,再次加载一个UIImagePickerController(当调试它再次进入viewDidLoad时,这样可行)。在viewDidLoad里面,它再次使用上面的代码选择前置摄像头。
BUT! UIImagePickerController现在只显示后置摄像头!如果我第三次回到根视图控制器并再次加载UIImagePickerController,现在它就像它应该显示前置摄像头。它第四次显示后置摄像头等等。
我调试了它,每次它都像预期的那样从上面跳到代码行,所以我不知道为什么每秒都会显示后置摄像头?
答案 0 :(得分:3)
移动到下一个场景时,我没有释放UIImagePickerController对象 使用:
[cameraUI dismissModalViewControllerAnimated:NO];
[cameraUI.view removeFromSuperview];
[cameraUI release];
最后一行解决了这个问题。 (我仍然没有得到这个,因为呈现UIImagePickerController的View Controller已经完全加载了)