美文网首页
代理方法实现数据展示

代理方法实现数据展示

作者: ytsq | 来源:发表于2018-06-09 18:13 被阅读0次

使用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

相关文章

网友评论

      本文标题:代理方法实现数据展示

      本文链接:https://www.haomeiwen.com/subject/wetxeftx.html