代理方法实现数据展示

使用MVC开发,通常View会持有Model,我们只需要重写Model的set方法,就可以完成数据的展示,但是开发过程中,通常会遇到需要展示的页面相同,但是数据源并不是同一个Model.这时候需要写多个Model的set方法.
还有一种方式 ,可以创建一个代理,让View需要的数据源都遵循代理即可,这样就不用写特别多set方法,直接上代码

 //正常来说是这样的
//1 创建model
@interface SQModel1 : NSObject

@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *age;
@property (nonatomic, copy) NSString *address;

@end
//2 给cell创建属性
@interface SQTableViewCell : UITableViewCell

@property (nonatomic, strong) SQModel1 *model1;

@end

//3 重写set方法
- (void)setModel1:(SQModel1 *)model1 {
   
    _model1 = model1;
    self.textLabel.text = model1.name;
    self.detailTextLabel.text = model1.age;
}

现在需要做的是这样

//首先创建一个协议
@protocol SQTableViewDelegate

@property (nonatomic, copy) NSString *name;

@property (nonatomic, copy) NSString *age;

@property (nonatomic, copy) NSString *address;

@end

//2 遵守协议
@interface SQModel : NSObject<SQTableViewDelegate>


@end

//3 属性
@interface SQTableViewCell : UITableViewCell

@property (nonatomic, weak) id<SQTableViewDelegate> delegate;

@end

//4 重写set方法
- (void)setDelegate:(id<SQTableViewDelegate>)delegate {

    _delegate = delegate;
    
    self.textLabel.text = delegate.name;
    self.detailTextLabel.text = delegate.age;
}

这样即使是多个model,我们只需要遵守这个协议,让后赋值给cell->delegate就可以了,不用写那么多的set方法

demo

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,925评论 8 265
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,053评论 3 119
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,871评论 1 32
  • 以30万KM/秒的速度 流银般倾泻 略过山尖和楼宇 把西方灼烧成 万道金光 冰一样的瓦蓝 清澈见底 白云无风 江底...
    崩山子阅读 1,423评论 0 0
  • 茶艾,这个名字,是2016才跟上我打天下的。 记得以前很喜欢棒棒糖的一首歌《苦茶》,喜欢王子。 后来把网名改成了苦...
    茶艾的小窝阅读 4,147评论 1 1

友情链接更多精彩内容