Ios Tabbar控制器中的UIImagePickerController
我试图在UITabBarController中实现imagepickercontroller。到目前为止,一切顺利 在我的ViewController中,启动imagePickerController,然后将其放入我的TabBarViewController tabbar数组中,我实现了“loadview”方法: 但是当我运行这个应用程序时,这个应用程序似乎在loadView方法中创建了一个inifite循环,而tabbar不再做出反应。我错过什么了吗 我不希望ImagePickerController全屏显示,并使用“presentviewcontroller”方法按下,而是作为“普通”视图加载到其中一个选项卡中 因此,我的问题是: 1) 我应该使用“viewdidload”而不是“loadview”吗?因为在viewdidload中,它似乎正在工作 2) 但是当使用viewdidload时,我无法修复应该显示imagepicker的帧。视频屏幕下方和选项卡栏上方始终有一个黑色条Ios Tabbar控制器中的UIImagePickerController,ios,uitabbarcontroller,uiimagepickercontroller,viewdidload,loadview,Ios,Uitabbarcontroller,Uiimagepickercontroller,Viewdidload,Loadview,我试图在UITabBarController中实现imagepickercontroller。到目前为止,一切顺利 在我的ViewController中,启动imagePickerController,然后将其放入我的TabBarViewController tabbar数组中,我实现了“loadview”方法: 但是当我运行这个应用程序时,这个应用程序似乎在loadView方法中创建了一个inifite循环,而tabbar不再做出反应。我错过什么了吗 我不希望ImagePickerContro
非常感谢 我认为,在使用类似于
self.view=[[UIView alloc]initWithFrame:someFrame]的内容设置视图本身之前,当您将-addSubview
消息发送到self.view
时,无限循环就会出现因为从技术上讲,在loadView
中,您应该设置视图控制器的视图
如果self.view
为nil
并尝试发送消息,则会再次调用-loadView
,从而产生无限循环。我认为,在使用类似self.view=[[UIView alloc]initWithFrame:someFrame];
因为从技术上讲,在加载视图中,您应该设置视图控制器的视图。如果self.view
为nil
并且您尝试发送消息,则会再次调用-loadView
。但是视图是否已在“showCamera”中初始化方法,在添加子视图之前加载到“loadView”中?是的!!现在我知道了!刚刚用UIView初始化了self.view…完美地解决了我的问题!!谢谢!我将添加我的评论作为答案!
- (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;
}