4

ビューコントローラの1つがロードされるとすぐにUIImagePickerControllerを表示しようとしています。ユーザーがボタンを押さなくてもこれを実行したいので、次のようにviewDidLoadメソッドをオーバーライドします。

- (void)viewDidLoad {
    [super viewDidLoad];

    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePickerController.allowsImageEditing = YES;
    imagePickerController.delegate = self;    
    [self presentModalViewController:imagePickerController animated:YES];
    [imagePickerController release];
}

これはコンパイルされて実行されますが、View Controllerがロードされると、イメージピッカーは表示されません。このコードは、たとえばボタンのイベントにアタッチすると正常に機能します。何か案は?

ありがとう。

4

3 に答える 3

4

私は同じ問題を抱えていましたが、それを解決しました。使ってみてください

-(void) awakeFromNib {

}

他のすべてがロードされた直後にロードされます。

于 2009-09-18T00:13:05.977 に答える
3

コードを入れてみてください

-(void)viewDidAppear

ただし、ビューが画面に表示されるたびに(UIImagePickerを閉じた後に表示される場合を含めて)実行されるため、BOOL値を追加して、最初に表示されたとき、または必要なときにのみ発生するようにする必要があります(つまり、モーダルビューを閉じた後ではありません)。

于 2009-08-18T02:43:41.377 に答える
-1

viewDidLoadがpresentModalViewController:animated:を使用するには早すぎるようです。ワンショットタイマーをフォークして、次の実行ループの反復からメソッドを呼び出すことをお勧めします。

[NSTimer
 scheduledTimerWithTimeInterval:0
 target:self
 selector:@selector(onLoadTimer:)
 userInfo:nil
 repeats:NO];

次のメソッドを追加します。

- (void)onLoadTimer:(id)unused
{
    [self presentModalViewController:imagePickerController animated:YES];
    [imagePickerController release];
}
于 2009-08-17T21:00:16.300 に答える