4

我试图在我的视图控制器之一加载后立即显示 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];
}

这会编译并运行,但是当加载视图控制器时,不会显示图像选择器。例如,如果我将它附加到按钮的事件,则此代码可以正常工作。有任何想法吗?

谢谢。

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 回答