首页 > 代码库 > 开发进阶13_UITableView多行显示
开发进阶13_UITableView多行显示
UITableView的两种内置样式
/*
展示两组数据
广东:广州、深圳、梅州、东莞
湖南:长沙、益阳、岳阳
湖北:黄冈、武汉
*/
@interface ViewController () <UITableViewDataSource>
{
NSArray *_allCities;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.添加UITableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView.dataSource = self;
[self.view addSubview:tableView];
_allCities = @[
@[@"广州",@"深圳",@"梅州",@"东莞"],
@[@"长沙",@"益阳",@"岳阳"],
@[@"黄冈",@"武汉"]
];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _allCities.count;
}
#pragma mark 第section组一共有多少行
//传入的section的NSInteger类型,从0开始,0表示第一组
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *sectionArray = _allCities[section];
return sectionArray.count;
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//indexPath标识唯一的一行
//第section组的第row行
//indexPath.row
//indexPath.section
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
//设置cell显示的文字
cell.textLabel.text = _allCities[indexPath.section][indexPath.row];
return cell;
}
#pragma mark 第section组显示的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return @"hahah";
}
#pragma mark 第section组显示的尾部标题
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return @"ooo";
}
@end
#import "ViewController.h"
#define kHeader @"header"
#define kFooter @"footer"
#define kCities @"cities"
@interface ViewController () <UITableViewDataSource>
{
NSArray *_allProvinces;//所有省份
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.添加UITableView
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView.dataSource = self;
[self.view addSubview:tableView];
_allProvinces = @[
@{
kHeader:@"广东",
kFooter:@"广东好啊",
kCities:@[@"广州",@"深圳",@"梅州",@"东莞"]
},
@{
kHeader:@"湖北",
kFooter:@"广东也好啊",
kCities:@[@"长沙",@"益阳",@"岳阳"]
}
];
}
#pragma mark - 数据源方法
#pragma mark 一共有多少组(section == 区域\组)
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _allProvinces.count;
}
#pragma mark 第section组一共有多少行
//传入的section的NSInteger类型,从0开始,0表示第一组
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSArray *sectionArray = _allProvinces[section][kCities];
return sectionArray.count;
}
#pragma mark 返回每一行显示的内容(每一行显示怎样的cell)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//indexPath标识唯一的一行
//第section组的第row行
//indexPath.row
//indexPath.section
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
//设置cell显示的文字
cell.textLabel.text = _allProvinces[indexPath.section][kCities][indexPath.row];
return cell;
}
#pragma mark 第section组显示的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return _allProvinces[section][kHeader];
}
#pragma mark 第section组显示的尾部标题
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
return _allProvinces[section][kFooter];
}
@end
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
得知一共有多少组
-》然后调用数据源的
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
得知第section组一共有多少行
-》然后调用数据源的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
//indexPath标识唯一的一行
//第section组的第row行
//indexPath.row
//indexPath.section
-》第section组显示怎样的头部标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
-》第section组显示怎样的尾部标题
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
#pragma mark 返回表格右边的索引条
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
//返回的内容没有要求,点击的时候根据点击的数据在数组中的位置,显示相应位置上的UITableViewCell
return @[@"1",@"2",@"3",@"4",@"5"];
}
开发进阶13_UITableView多行显示