多组数据的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样式,向上推的时候头部会跟着上去。