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