我有三个View控制器。
第一个UIViewController包含一个UIImage
,当我点击" crop"按钮,转到第二个视图控制器我通过推视图控制器传递图像,这里我正在裁剪我的UIImage
。
在裁剪图像后从图像编辑器Viewcontroller继承的第二个UIViewController
中,单击"完成"按钮。
我需要将裁剪后的图像传递到另一个视图控制器,我在这里有分享按钮来分享帖子。
问题是当我将编辑后的图像推到另一个存在共享按钮的视图控制器时,图像没有通过。
答案 0 :(得分:1)
在进行推送之前,您是将图像保存在Detail Controller中吗?
DetailController *detailVC=[[DetailController alloc]
initWithNibName:@"DetailController"
bundle:nil];
detailVC.image = self.image;
[self.navigationController pushViewController:detailVC animated:YES];
答案 1 :(得分:1)
<强>团强>
您在View Controller
在Controller.h
:
@class Controller;
@protocol ControllerDelegate <NSObject>
- (void)sendFrom:(Controller *)controller
image:(UIImage *)image;
@end
@interface Controller : UIViewController
@property (weak, nonatomic) NSObject <ControllerDelegate> * delegate;
@end
在Controller.m
时,如果要发送图片:
[self.delegate sendFrom:self
image: self.image];
在Detail View Controller
之后,请勿忘记将其指定为Controller
的代表。并实施ControllerDelegate
协议。要做到这一点:
在DetailController.h
中实施协议。你也可以在你的.m上做到这一点。
#import "Controller.h"
@interface DetailController : UIViewController <ControllerDelegate>
您在Controller
Detail Controller
的引用
@property (nonatomic, strong) ViewController *controller;
并在delegate
的{{1}}中分配viewDidLoad
。例如:
Detail Controller
不要忘记在详情视图中实施-(void)viewDidLoad:(BOOL)animated{
[super viewDidLoad:animated];
self.controller.delegate = self;
}
。在这里,您会收到从Controller传递的图片,并将其保存在protocol method
Detail Controller
媒体资源中:
UIImage
答案 2 :(得分:0)
您可以将storyboard 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];
}
}