(十三)UITableView数据模型化

多组数据的TableView的设计方法:每一组用一个模型对象表示。

模型包含了标题数据和行数据的数组,在控制器里包含模型的组来对各个模型进行初始化。

在tableView相应的方法中,从控制器的模型组中取出模型来处理。

需要补充一点cell的获取,使用方法:

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];

这种方法不必先创建cell然后赋值identifier。

以展示汽车数据为例,汽车数据包含了头标题写车系,尾描述,和相应车系的车辆数据。

1.建立模型,模型的结构为:

@interface CarGroup : NSObject

/**
 *  头部标题
 */
@property (nonatomic, copy) NSString *title;

/**
 *  尾部标题
 */
@property (nonatomic, copy) NSString *desc;

/**
 *  这组所有的车(字符串)
 */
@property (nonatomic, strong) NSArray *cars;

@end
2.在控制期内建立一个模型组,并进行初始化:

@property (nonatomic, strong) NSArray *carGroups;
重写get方法进行懒加载:

- (NSArray *)carGroups{
    if (_carGroups == nil) {
        //初始化各组
        //德系品牌
        CarGroup *cg1 = [[CarGroup alloc] init];
        cg1.title = @"德系品牌";
        cg1.desc = @"德系品牌很好";
        cg1.cars = @[@"奔驰",@"宝马",@"奥迪"];
        
        CarGroup *cg2 = [[CarGroup alloc] init];
        cg2.title = @"日韩品牌";
        cg2.desc = @"日韩品牌品牌很好";
        cg2.cars = @[@"本田",@"丰田"];
        
        _carGroups = @[cg1,cg2];
        
    }
    return _carGroups;
}
3.在各个方法中从carGroups中获取模型,然后赋值,不再赘述。

Tip:控制器可以控制状态栏,通过重写perfersStatusBarXxx系列方法进行修改。



TableView的Style样式讨论

plain样式,向上推的时候头部会停住(例如QQ好友列表),iOS的细节:第二组的标题会把第一组的标题顶上去。

Grouped样式,向上推的时候头部会跟着上去。



原文地址:https://www.cnblogs.com/aiwz/p/6154240.html