将 UIImage 从 photopicker 传递到以前的 ViewController

Posted

技术标签:

【中文标题】将 UIImage 从 photopicker 传递到以前的 ViewController【英文标题】:Pass a UIImage from photopicker to a previous ViewController 【发布时间】:2017-01-05 20:33:35 【问题描述】:

我有两个 UIViewController,第一个 (A) 接受用户输入并询问他们是否要添加照片。如果他们点击“添加照片”按钮,则会将其推送到第二个 (B) 视图控制器。两个视图控制器都位于导航控制器内部,我只有从 A 到 B 的转场。我已经阅读了其他答案,但它们都使用 prepareToSegue,这需要从 B 转回 A,但这并没有真正起作用因为导航控制器。

我在这里附上我的两个视图控制器的屏幕截图。有没有更好的方法来做到这一点(模态)?我是用 Objective-C 写的。

【问题讨论】:

你需要了解自定义委托 【参考方案1】:

你可以使用 block 传回你想要的任何东西。在去 B 之前,设置块。然后在 B 中完成工作后,调用块并将 UIImage 作为参数发送。

【讨论】:

【参考方案2】:

在 B.h 控制器中,您需要在 b.h 声明上方创建 Protocol /delegate

@protocol MyClassImageReturnDelegate <NSObject>   //define delegate protocol
- (void) myClassDelegateMethodThatReturnsImage: (UIImage *) image;  //define delegate method to be implemented within another class
@end 

在 B.h

@property (nonatomic, weak) id <MyClassDelegate> delegate; //define MyClassDelegate

在 B.m

- (void) myMethodToReturnImageAndGoBack 
[self.navigationController popViewControllerAnimated:YES];
[self.delegate myClassDelegateMethod:imageThatNeedToreturn]; //this 

在上午你需要在推送之前设置这个委托

bClassObject.delegate = self;

并且也实现该方法

- (void) myClassDelegateMethodThatReturnsImage: (UIImage *) image 
NSLog(@"Delegates are great!");

【讨论】:

【参考方案3】:

实现这一目标的方法很多。

    在 B 上使用委托。在 prepareForSegue 的 A 中设置 B 的委托。 将图片保存到 B 上的沙箱中,B 发布通知 (NSNotificationCenter) 告诉 A 从沙箱中拾取照片。 使用单例并将照片保存在内存中(如果照片很大,可能不太好) 对completionHandler 使用自定义块方法。

一切都比较容易。

【讨论】:

以上是关于将 UIImage 从 photopicker 传递到以前的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

快速将参数传递给#selector方法[重复]

PhotoPicker 发现错误:错误域 = PlugInKit 代码 = 13

IOS将UIView转化为UIImage

进入 UIImagePickerController 编辑模式

将参数传递给 UITapGestureRecognizer [重复]

UIView转换为UIImage