将 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的主要内容,如果未能解决你的问题,请参考以下文章
PhotoPicker 发现错误:错误域 = PlugInKit 代码 = 13
进入 UIImagePickerController 编辑模式