Ios 使用push view controller时,如何将Uiimage从一个视图控制器传递到另一个视图控制器?

Ios 使用push view controller时,如何将Uiimage从一个视图控制器传递到另一个视图控制器?,ios,uiviewcontroller,Ios,Uiviewcontroller,我有三个视图控制器 第一个UIViewController包含一个UIImage,当我单击“裁剪”按钮时,转到第二个视图控制器,我通过按下视图控制器传递图像,这里我正在裁剪我的UIImage。 在剪切我的图像后从图像编辑器Viewcontroller继承的第二个UIViewController中,单击“完成”按钮。 我需要将裁剪后的图像传递给另一个视图控制器,在那里我有共享按钮来共享帖子 问题是,当我将编辑后的图像推送到另一个显示“共享”按钮的视图控制器时,图像没有传递。推之前,是否将图像保存在

我有三个视图控制器

第一个UIViewController包含一个
UIImage
,当我单击“裁剪”按钮时,转到第二个视图控制器,我通过按下视图控制器传递图像,这里我正在裁剪我的
UIImage
。 在剪切我的图像后从图像编辑器Viewcontroller继承的第二个
UIViewController
中,单击“完成”按钮。

我需要将裁剪后的图像传递给另一个视图控制器,在那里我有共享按钮来共享帖子


问题是,当我将编辑后的图像推送到另一个显示“共享”按钮的视图控制器时,图像没有传递。

推之前,是否将图像保存在“细节”控制器中

DetailController *detailVC=[[DetailController alloc]
                          initWithNibName:@"DetailController"
                          bundle:nil];

detailVC.image = self.image;

[self.navigationController pushViewController:detailVC animated:YES];

授权

视图控制器上实现协议

控制器.h
中:

@class Controller;

@protocol ControllerDelegate <NSObject>

- (void)sendFrom:(Controller *)controller
                   image:(UIImage *)image;

@end

@interface Controller : UIViewController

@property (weak, nonatomic) NSObject <ControllerDelegate> * delegate;

@end
详细视图控制器
上运行后,不要忘记将其指定为
控制器
的代理。并实现
控制器delegate
协议。为此:

在您的
DetailController.h
中执行协议。你也可以在你的电脑上做

#import "Controller.h"

@interface DetailController : UIViewController <ControllerDelegate>
并在
详细信息控制器的
视图加载
中分配其
委托
。例如:

-(void)viewDidLoad:(BOOL)animated{

      [super viewDidLoad:animated];

      self.controller.delegate = self;
   }
不要忘记在详细信息视图中实现
协议方法
。在这里,您将收到从控制器传递的图像,并将其保存在
详细控制器
UIImage
属性中:

- (void)sendFrom:(Controller *)controller
                       image:(UIImage *)image{

   self.image = image;
}

您可以将序列图像板segue实现到您的细节控制器,并使用以下示例代码

- (void)cropButtonClick:(id)sender
{
    [self performSegueWithIdentifier: @"MySegue" sender:sender];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MySegue"]) {
        DetailController *detailVC = segue.destinationViewController;
        [detailVC setImage:self.image];
    }
}

复制图像以及如何将图像传递给另一个视图控制器通过使用initwith image方法,我正在将图像从一个视图控制器传递给另一个视图控制器,并且我正在将编辑的图像作为imageview.image=v2.Images传递,但与我尝试的代码相同,它没有在共享视图控制器中显示编辑的图像,即,在第三视图控制器中,尝试通过delegation、通知或键值编码来传递信息。我想说的是第二视图控制器,我正在将图像作为编辑图像进行深度复制,因此请您检查代码-(id)initWithImage:(UIImage*)image{self=[self init];if(self){originalImage=[image deepCopy];NSLog(@“originalImage is%@”,originalImage);}返回self;}上面的原始图像具有已编辑的图像,我需要在单击共享按钮后将其发送到共享视图控制器我应该共享该图像
- (void)sendFrom:(Controller *)controller
                       image:(UIImage *)image{

   self.image = image;
}
- (void)cropButtonClick:(id)sender
{
    [self performSegueWithIdentifier: @"MySegue" sender:sender];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"MySegue"]) {
        DetailController *detailVC = segue.destinationViewController;
        [detailVC setImage:self.image];
    }
}