在程序中我们往往需要两个视图之间传值,用delegate可以解决这个问题。

(1)定义delegate

#import <UIKit/UIKit.h>@protocol SetPhotoDelegate <NSObject>- (void)setPhoto:(UIImage *)photo;@end@interface PhotoDelegate : NSObject@end

(2)在代理人的.h文件中声明遵守该协议

#import "PhotoDelegate.h"@interface ViewController : UIViewController<SetPhotoDelegate>

然后在.m文件中实现协议中的方法

- (void)setPhoto:(UIImage *)photo
{//委托人实现委托方法//显示照片self.firstImageView.image = photo;
}

最后在初始化委托人的地方,将代理人设置为自己

PhotoPickerViewController *photoPicker = [self.storyboard instantiateViewControllerWithIdentifier:@"PhotoPicker"];//将自己设为PhotoPickerViewController的委托人
photoPicker.delegate = self;[self presentViewController:photoPicker animated:YES completion:NULL];

(3)在委托人头文件文件中定义

#import <UIKit/UIKit.h>
#import "PhotoDelegate.h"@interface PhotoPickerViewController : UIViewController//这是用assign防止引起循环引用
@property(nonatomic, assign) NSObject<SetPhotoDelegate> * delegate;@end

调用代理方法

- (IBAction)clickDoneButton:(id)sender
{//通过delegate调用代理方法[self.delegate setPhoto:selectedImage];[self dismissViewControllerAnimated:YES completion:nil];
}

Delegate使用方法相关推荐

  1. 在请求完成后回调delegate的方法。然而回调时经常遇到这种情况:delegate已经被释放...

    最近的项目遇到了网络请求,需要在请求完成后回调delegate的方法.然而回调时经常遇到这种情况:delegate已经被释放,这时调用其方法则会引起crash. objc的runtime中有两种判断类 ...

  2. Protocol与Delegate 使用方法详解

    你要知道的KVC.KVO.Delegate.Notification都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/78224 ...

  3. delegate 委托方法

    一先定义一个委托方法 ---------第一个类XX //定议委托 public event ordinary Ordinary; //定议委托方法 public delegate void ordi ...

  4. new,virtual,override,interface,delegate,event-------------C#——方法实现总结

    C#--方法实现总结 本文分两部分来写,第一部分:C#方法实现的理解与问题,第二部分:C#中方法实现的种类. 第一部分:C#方法实现的理解与问题 理解: 1. 使用virtual和override关键 ...

  5. delegate使用方法C#(Demo)

    老鸟路线: 无返回值:   Control  控件父类 namespace System {[__DynamicallyInvokable]public delegate void Action< ...

  6. [C#] Delegate, Multicase delegate, Event

    声明:这篇博客翻译自:https://www.codeproject.com/Articles/1061085/Delegates-Multicast-delegates-and-Events-in- ...

  7. Delegate成员变量和Event的区别

    上周五有同事问了我一个问题:Delegate和Event有什么区别?具体来说在设计一个类的时候,声明一个事件(Event)和声明一个Delegate类型的成员变量有啥区别. 我的第一反应是没啥区别,虽 ...

  8. 用 C# 做组件设计时的事件实现方法讨论

    事件,其实就是将物体的某个过程处理通过委托(delegate, 也就是函数指针) 的方式公开给外部的自定义函数处理. C# 可以使用多播委托,但实际上一般情况下只需要用到单播. 事件需要通过调用到那个 ...

  9. jQuery on()方法绑定动态元素的点击事件无效

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

最新文章

  1. 媲美光纤!WiFi传输速度已可达100Gbps
  2. 英国推6.5亿英镑网络安全战略 强化安全屏障
  3. 牛客练习赛7 E 珂朵莉的数列
  4. 解密微信小程序Java登录流程(ssm实现具体功能)
  5. SaaS权限控制:设计思路和表分析
  6. C#类类型“.NET技术”
  7. Grafana展示DNS解析延时
  8. Map集合转换成实体类对象,实体类对象转换为map集合,互转工具类
  9. android自动登录_游戏社区App (三):客户端与服务端的加密处理 和 登录
  10. laravel input值必须不等于0_【第十一期】实现 Javascript 版本的 Laravel 风格参数验证器...
  11. 家庭智能网络防盗及远程实时监控系统
  12. 华为交换机配置时区_华为交换机配置命令
  13. linux/windows_vscode_配置mingw的C/C++环境(by official doc)/一些可能遇到的问题和对策)/vscode中文输出乱码问题
  14. python上传文件到onedrive_python-onedrive使用教程【linux备份至onedrive】 | C/C++程序员之家...
  15. 实现页面上方实现输入关键字搜索出关联关键词内容的功能
  16. 生日快乐程序_「秒福」小程序:送祝福,2020我们不一样
  17. 计算机java用什么收题_JAVA是一种______。 A.计算机语言 B.计算机没备 C.数据库 D.应用软件...
  18. 推荐!最新机器学习、深度学习绘图模板.ppt
  19. 四旋翼无人机学习第1节--准备工作
  20. 代码改变我的命,我要用代码改变100万女性的命

热门文章

  1. 索爱耳机HPM-82.教你识别真假.帮你炼出晶晶火眼!
  2. [日常] NOI前划水日记
  3. 网传搜狐遭遇史诗级邮件诈骗,张朝阳回应来了
  4. 随笔:关于FPS网络游戏“行业标准”(一)
  5. React Jest + enzyme 配置 及 简单用例
  6. 山西高企认定中对科研人员的要求【企策通】
  7. unity实现小地图功能
  8. 怎样增加图片分辨率?图片提高像素的方法
  9. 数据存储之——Android文件存储系统及文件系统(Android Q)
  10. 动态刷新mapper看过来