(十三)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; @end2.在控制期内建立一个模型组,并进行初始化:
@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样式,向上推的时候头部会跟着上去。