我正试图在UITabBarController中实现imagepickercontroller。到目前为止,一切都很好。。。。
在我的ViewController中,我启动imagePickerController,然后将其放置在TabBarViewController选项卡阵列中,我实现了"loadview"方法:
- (void)loadView{
self.arController = [[IFAugmentRealityController alloc] initWithViewController:self];
[self showCamera];
[self initOverlayController];
self.picker.delegate = self;
[self.view addSubview:self.picker.view];
}
- (void)initOverlayController {
overlay = [[IFAROverlayView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];
overlay.delegate = self;
}
- (void)showCamera {
self.picker = [[UIImagePickerController alloc] init];
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.showsCameraControls = NO;
self.picker.cameraViewTransform = CGAffineTransformScale(self.picker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y);
self.picker.cameraOverlayView = overlay;
}
但当我运行该应用程序时,该应用程序似乎在loadView方法中创建了一个inifite循环,并且选项卡不再做出反应。我错过什么了吗?
我不希望ImagePickerController是全屏的,并使用"presentviewcontroller"方法进行推送,而是在其中一个选项卡中作为"普通"视图加载。
所以我的问题是:
1) 我应该使用"viewdidload"而不是"loadview"吗?因为有了viewdidload,它似乎在上工作
2) 但是当使用viewdidload时,我无法修复图像选择器应该显示的帧。视频屏幕下方和选项卡栏上方总是有一个黑条。
非常感谢!!
我认为,在用类似self.view = [[UIView alloc] initWithFrame:someFrame];
的东西设置视图本身之前,当您向self.view
发送-addSubview
消息时,会出现无限循环,因为从技术上讲,在loadView
中,您应该设置视图控制器的视图。
如果self.view
是nil
,并且您试图向它发送消息,则会再次调用-loadView
,从而导致无限循环。