【问题标题】:UIImage and prepareforSegue not able to pass the imageUIImage 和 prepareforSegue 无法传递图像
【发布时间】:2018-11-03 10:16:23
【问题描述】:

这是我的代码:

@property (weak, nonatomic) IBOutlet UIImageView *chosedImage;

    - (IBAction)cropImageTap:(id)sender {

        [self dismissViewControllerAnimated:YES completion:^{
             UIImage * pickedImage = self->_chosedImage;
            //[UIImage imageNamed:@"helloWorld.jpg"];

            [self performSegueWithIdentifier:@"gotomainimage" sender:pickedImage];

        }];
    }

我的表演继续如下:

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {


        PostVC *vc = (PostVC*)segue.destinationViewController;
        UIImage *img = (UIImage*)sender;

        if (img.images == nil) {
            NSLog(@"null img");
             vc.Sourcemage = img;
        }
        else {

             NSLog(@"not null img");
             vc.Sourcemage = img;
        }

    }

我只得到空图像。我的图像没有出现。我在这里做什么问题?

请帮帮我

更新:

我更新后的代码,工作方式类似 - 给我控制台消息:

它的空数据a - post vc 它不是空图像 - prepareForSegue 方法

无法找出为什么会发生。

     - (IBAction)cropImageTap:(id)sender {


        UIImageView * pickedImage = _chosedImage;
        [self dismissViewControllerAnimated:YES completion:^{
            [self performSegueWithIdentifier:@"gotomainimage" sender:pickedImage.image];
        }];
    }

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {

        PostVC *vc = (PostVC*)segue.destinationViewController;
        UIImage *img = (UIImage*)sender;

        if (img != nil) {
             NSLog(@"its not an null image");
            vc.Sourcemage = img;

        } else {
             NSLog(@"its an null image");
        }
    }

in my postvc :

    @property(nonatomic) UIImage *Sourcemage;
    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];



        if (self.Sourcemage != nil){
            NSLog(@"not null dataa");

            _PostImageView.image = _Sourcemage;

        } else {
    NSLog(@"not null dataa");
           _PostImageView.image = [UIImage imageNamed:@"Travel.png"];
        }


    }

【问题讨论】:

  • 我建议你使用这个链接stackoverflow.com/questions/31576232/…
  • 保存图像的视图控制器在完成块中被解除。试着这样说: UIImage *pickImage = self->_chosedImage;上一行。
  • @Cristian 我收到警告iincompatible pointer types initializing 'UIImage *' with an expression of type 'UIImageView *'
  • @Cristian 检查我的更新...它没有显示图像
  • 请向我们展示 Sourcemage 变量的 PostVC 代码

标签: ios objective-c uiimageview


【解决方案1】:

你的目标视图控制器(PostVC)中的变量 Sourcemage 是 UIImage 吗?

请检查该属性是否为UIImage。

【讨论】:

  • @property (nonatomic, strong) UIImage* Sourcemage;它在我的 postvc.h 中
【解决方案2】:

这是因为您传递的是 UIImageView 而不是 UIImage

如下更新您的代码,

UIImageView * pickedImage = _chosedImage;
[self dismissViewControllerAnimated:YES completion:^{
   [self performSegueWithIdentifier:@"gotomainimage" sender:pickedImage.image];
}];

在上面的代码中,你必须传递 UIImage 而不是 UIImageView 本身并像这样处理它,

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    PostVC *vc = (PostVC*)segue.destinationViewController;
    UIImage *img = (UIImage*)sender;
    vc.Sourcemage = img;
}

【讨论】:

  • NOW 图片来了,但在我的 postvc 中没有显示这是问题..就像这里 _PostImageView.image = _Sourcemage;
  • 你得到pickImage.image了吗?
  • 你真正想做什么?
  • 从一个 vc 到另一个 vc 我正在传递要显示的图像。那只是不支持
  • 更新你的代码后,pickedImage 本身得到空值
【解决方案3】:

你为什么不这样做呢?

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    PostVC *vc = (PostVC*)segue.destinationViewController;
    vc.Sourcemage = _checkedImage;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多