iOS开发之界面间的传值

1.常见的界面间传值方式

1)属性
2)代理
3)block
4)通知
5)NSUserDefault
以上几种方式比较常见,使用广泛

2.响应链传值

今天我所记录的是一种比较少见,且仅适用于UIResponder的子类对象
基于响应链进行对象间传值;

首先我们了解一下事件传递和事件响应:

事件传递:是自上向下传递,由UIApplication -> UIWindow -> UIViewController -> UIVIew/UIButton;

事件响应:是自下向上响应,若当前对象未响应事件,则依次往上找响应者,若到最上层依然无响应者,则此次事件被抛弃;

使用方法:
首先我们给UIResponder 添加一个分类,取名Router
见下图 .h 和 .m


Screenshot 2021-05-06 at 9.54.53 PM.png

Screenshot 2021-05-06 at 9.55.42 PM.png

上述方法中
eventName: 事件名称,用来标记按钮的点击事件
modelInfo:需要传递的对象,我这里用一个字典来存储需要用到的值;

接下来我们在tableview的每一行Cell上添加一个button,并且给button和model对象分别设置一个key作为标记方便取值,然后在button的点击方法中包装好需要传递的对象,并且调用分类方法进行传值,看下图:


Screenshot 2021-05-06 at 10.04.03 PM.png
Screenshot 2021-05-06 at 10.05.16 PM.png

在viewController中重写UIResponder分类中的方法,即可拿来cell内部传出来的值

Screenshot 2021-05-06 at 10.14.14 PM.png

这种方法传值也挺直观方便,但使用是有限制的,仅用于UIResponder子类对象,所以在此记录一下,仅供参考哈!

你可能感兴趣的:(iOS开发之界面间的传值)