0

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メソッド内に無限ループを作成しているように見え、タブバーは反応しなくなります。私は何かを逃しましたか?

ImagePickerControllerをフルスクリーンにして、「presentviewcontroller」メソッドでプッシュしたくありませんが、タブの1つに「通常の」ビューとしてロードします。

だから私の質問は:

1)「loadview」の代わりに「viewdidload」を使用する必要がありますか?viewdidloadで動作しているように見えるため

2)しかし、viewdidloadを使用すると、imagepickerが表示されるフレームを修正できません。ビデオ画面の下とtabBarの上には常に黒いバーがあります。

どうもありがとう!!

4

1 に答える 1

1

ビュー自体を設定する前に-addSubviewメッセージを送信すると、無限ループが発生していると思います。これは、技術的には、ビューコントローラのビューを設定することになっているためです。self.viewself.view = [[UIView alloc] initWithFrame:someFrame];loadView

self.viewの場合nil、メッセージを送信しようとすると、-loadViewが再度呼び出され、無限ループが発生します。

于 2013-02-21T19:44:21.517 に答える