***cell有表视图和集合视图的cell两种,工厂模式的实现方式大致相同。
1.首先介绍表视图的cell工厂
1):首先创建继承自UITableViewCell的cell基础类BaseTableViewCell,在工程中使用自定义的cell都继承自这个类(如果需要一个控制器控制两个以上!不同的!的cell的话,那么第二个cell就需要用代码写了)。
2):在基础cell类中声明一个设置数据的方法 ,并空实现
- (void)setDataWithModel:(BaseModel *)model;
3):创建cell工厂类FactoryTableViewCell,并定义一个根据模型创建cell的方法
+ (BaseTableViewCell *)createTableViewCellWithModel:(BaseModel *)model tableView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath
{
//1.获取cell的名字
NSString *name = NSStringFromClass([model class]);
//2.创建cell
BaseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:name forIndexPath:indexPath];
}
4):工厂的使用
①:注册cell
[self.myTableView registerNib:[UINib nibWithNibName:@"ReadDetailCell" bundle:nil] forCellReuseIdentifier:NSStringFromClass([ReadDetailListModel class])];
②:在重用cell的方法中调用工厂中的方法
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//1.获取模型
BaseModel *model = self.alllistArray[indexPath.row];
BaseTableViewCell *cell = [FactoryTableViewCell createTableViewCellWithModel:model tableView:tableView indexPath:indexPath];
[cell setDataWithModel:model];
return cell;
}