【问题标题】:UIImagePickerController not loading in viewDidLoad for iPhone SDKUIImagePickerController 未在 iPhone SDK 的 viewDidLoad 中加载
【发布时间】:2009-08-17 20:22:43
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: iphone uikit uiimagepickercontroller viewdidload


    【解决方案1】:

    我有同样的问题,但解决了。尝试使用

    -(void) awakeFromNib {
    
    }
    

    它将在其他所有内容加载后加载。

    【讨论】:

    • 它只会加载一次,这可能是你所期望的,也可能不是
    • 需要注意的是,如果您希望 UIImagePickerController 在应用程序启动时首先加载(就像我所做的那样),您必须在 didFinishLaunching 而不是 awakeFromNib 处设置代码,因为 awakeFromNib 发生在 didFinishLaunching 之前。
    【解决方案2】:

    试着把代码放进去

    -(void)viewDidAppear
    

    这甚至会在每次视图出现在屏幕上时运行(包括在您关闭 UIImagePicker 后出现时),因此您可能必须添加一个 BOOL 值以使其仅在第一次显示时发生,或者当您想要它(即不在关闭模式视图之后)。

    【讨论】:

    • 这个。我认为,如果视图控制器无法以某种方式访问​​显示的 UI,它就无法以您想要的方式与之交互。
    【解决方案3】:

    看来 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];
    }
    

    【讨论】:

    • 感谢您的回复,但这似乎不起作用。程序挂起:[self presentModalViewController:imagePickerController animated:YES];
    • 在创建视图和访问 UI 本身之间可能有几秒钟甚至几分钟的时间(通常是当它作为子视图添加到其他东西或添加到导航中时) /tab 控制器。
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多