【问题标题】:UIimage not displaying image for duplicate methodUIimage不显示重复方法的图像
【发布时间】:2014-10-06 22:22:17
【问题描述】:

我有一个打开的 UImage 视图,您可以用它拍照并在 uiimageview 中查看它。但是我添加了另一个图像视图并复制了代码,现在图像显示的图像与第二个相同。我相信这可能与'[UIImagePickerControllerOriginalImage];'有关。

  - (void)imagePickerController:(UIImagePickerController *)
picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];

    // Get the image and store it in the image view
    image = info[UIImagePickerControllerOriginalImage];
    self.personimgThumbNail.image = image;

}

- (void)imagePickerControllertwo:(UIImagePickerController *)
picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];

    // Get the image and store it in the image view
    imagetwo = info[UIImagePickerControllerOriginalImage];
    self.personimgThumbNailtwo.image = imagetwo;

}

只需要下一步,在这一步上卡了好久。

【问题讨论】:

  • 我认为您的问题可能是您有两个 didFinishPickingMediaWithInfo。如果您已将您的类声明为 UIImagePickerControllerDelegate,并将您的委托声明为 self,则它只会调用上面的第一个方法。使用您的逻辑来决定在此方法中选择了哪个选择器,即 if (picker == picker1) 等。希望这会有所帮助。
  • 感谢您的反馈,但我仍然不相信我理解您所说的我应该纠正我的错误以及我应该实施什么代码来做到这一点。

标签: ios objective-c xcode uiimageview duplicates


【解决方案1】:

didFinish-Method 只能有一个。您必须区分方法本身内部的操作。该方法已经为您提供了调用该方法的 UIImagePickerController,因此您只需比较指向它的指针即可。

 - (void)imagePickerController:(UIImagePickerController *)
picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
     [self dismissViewControllerAnimated:YES completion:nil];

     if(picker == self.pickerController1){
        // Get the image and store it in the image view
        image = info[UIImagePickerControllerOriginalImage];
        self.personimgThumbNail.image = image;
    }else if(picker == self.pickerController2){
        // Get the image and store it in the image view
        imagetwo = info[UIImagePickerControllerOriginalImage];
        self.personimgThumbNailtwo.image = imagetwo;
    }
}

编辑:您必须在类的 .m 文件中定义 2 个属性

@property (strong) UIImagePickerController *pickerController1;
@property (strong) UIImagePickerController *pickerController2;

在实例化图像选择器时,您现在要做的如下 (代码取自此答案下的 OP 评论)

- (IBAction)accessPhotoLibrary:(id)sender {
    if(!self.pickerController1){
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
        imagePicker.delegate = self; 
        self.pickerController1 = imagePicker;
    }
    [self presentViewController:self.pickerController1 animated:YES completion:nil]; 
}

【讨论】:

  • 嘿伙计,它一直说“在 ViewController 上找不到属性选择器”我如何定义它。在 .h 或 .m 中?
  • 取决于你如何实例化 UIImagePickerController。您只需要在您显示的选择器上保留一个参考,以便您可以比较哪个调用该方法。如果您在代码中分配选择器,那么 .m 文件中的属性就是您想要的。
  • 这是正确的吗?它没有显示任何图像。 if(picker == self.personimgThumbNail.image){ // 获取图像并将其存储在图像视图中 image = info[UIImagePickerControllerOriginalImage]; self.personimgThumbNail.image = 图像; }else if(picker == self.personimgThumbNailtwo.image){ // 获取图像并将其存储在图像视图中 imagetwo = info[UIImagePickerControllerOriginalImage]; self.personimgThumbNailtwo.image = imagetwo;
  • 每当我将数字添加到选择器而不定义它时,它都会给我一个错误这是我打开 uiimage 视图的方式 - (IBAction)accessPhotoLibrary:(id)sender {// 创建图像选择器控制器 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];// 设置图像选择器控制器属性 imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.delegate = 自我; // 显示图像选择器控制器 [self presentViewController:imagePicker animated:YES completion:nil]; }
  • 好的,谢谢,我回家试试看。
猜你喜欢
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 2013-06-17
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-04
相关资源
最近更新 更多