TabBarController中的UIImagePickerController

时间:2013-02-21 18:53:43

标签: ios uitabbarcontroller uiimagepickercontroller viewdidload loadview

我正在尝试在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上方总是有一个黑条。

非常感谢!!

1 个答案:

答案 0 :(得分:1)

我认为在向-addSubview发送self.view消息之前,无限循环是在self.view = [[UIView alloc] initWithFrame:someFrame];设置视图本身之前进行的,因为从技术上讲,loadView你应该设置视图控制器的视图。

如果self.viewnil并且您尝试向其发送消息,则会再次调用-loadView,从而导致无限循环。