在TabBarController中的UIImagePickerController

我想实现在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方法内创build一个inifite循环,并且tabbar不再反应。 我错过了什么?

我不希望ImagePickerController是全屏幕,并用“presentviewcontroller”方法推送,但作为一个“普通”视图加载其中一个选项卡。

所以我的问题是:

1)我应该宁愿使用“viewdidload”而不是“loadview”? 因为与viewdidload似乎是工作

2)但是,当使用viewdidload我无法修复应该显示imagepicker的框架。 video屏幕下方和tabBar上方总是有一个黑条。

非常感谢!!

我认为当您将-addSubview消息发送到-addSubview之前设置视图本身的东西像self.view = [[UIView alloc] initWithFrame:someFrame]; 因为在技术上,在loadView你应该设置视图控制器的视图。

如果self.viewnil而您尝试发送消息, -loadView再次调用-loadView ,导致无限循环。