我正在尝试在UITabBarController中实现imagepickercontroller。到目前为止,这太好了....
在我的ViewController中,我启动了imagePickerController然后放入我的TabBarViewController tabbar数组,我实现了“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循环,并且tabbar不再响应。我错过了什么吗?
我不希望ImagePickerController是全屏的,并且使用“presentviewcontroller”方法推送,但是在其中一个标签内加载为“普通”视图。
所以我的问题是:
1)我应该使用“viewdidload”而不是“loadview”吗?因为使用viewdidload它似乎正在工作
2)但是当使用viewdidload时,我无法修复应该显示imagepicker的帧。视频屏幕下方和tabBar上方总是有一个黑条。
非常感谢!!
答案 0 :(得分:1)
我认为在向-addSubview
发送self.view
消息之前,无限循环是在self.view = [[UIView alloc] initWithFrame:someFrame];
设置视图本身之前进行的,因为从技术上讲,loadView
你应该设置视图控制器的视图。
如果self.view
为nil
并且您尝试向其发送消息,则会再次调用-loadView
,从而导致无限循环。