【问题标题】:UIimagepickercontrollerUIimagepicker控制器
【发布时间】:2011-12-07 06:01:56
【问题描述】:

我正在使用 UIimagepickercontroller 浏览或拍照并将其显示在子视图上。

-(IBAction) getPhoto:(id) sender {

    secondView1 = [[secondView alloc] 
               initWithNibName:@"secondView"
               bundle:nil];
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    } else {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    }

    [self presentModalViewController:picker animated:YES];    
    [self.view addSubview:secondView1.view];
}

这适用于 SourceTypeSavedPhotoAlbum,但如果我使用相机,则不会显示 secondview1.view。相反,它只显示原始视图。

这是我的委托方法:

- (void)imagePickerController:(UIImagePickerController *)picker  
        didFinishPickingMediaWithInfo:(NSDictionary *)info {
    secondView1.imageView.image = [info
    objectForKey:@"UIImagePickerControllerOriginalImage"];
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    [picker release];
}

感谢您的帮助!

【问题讨论】:

  • 您使用的是模拟器还是设备?如果是设备,有摄像头吗?
  • 在设备上。有相机。我可以拍照然后确认“使用”。之后,uiimagepickercontroller 被解除,但返回原始视图,而不是 secondview1.view。

标签: objective-c ios xcode uiimagepickercontroller


【解决方案1】:

我终于发现我应该这样做:

secondView1 = [[secondView alloc] 
    initWithNibName:@"secondView"
    bundle:nil];
self.view addSubview:secondView1.view];

在委托函数中。

(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    ...
}

否则,addsubview 可能会在图像选择器完成图像选择之前被调用。现在更好地了解代码如何流动和委托功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多