<UITableViewDelegate>
<UITableViewDataSource>比较重要
协议的执行流程:(注意:每个协议完整执行之后才会走下个流程)
1.先走有多少个section的协议:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.arr.count;
}
2.设定section的高度的协议
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 1;
}
3.设定section的title的协议:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
4.多少行的协议
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
5.设置行高协议:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
return 220;
}
6.走cell的协议(这里注意重用池的概念,每个row只对应一个cell,一般做项目都自定义cell,这里CustomCell就是我自定义的)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
//1.定义重用池的名字,
static NSString *cellIdentify =@"cell1";
//2.从重用池中取不用的cell,看能不能取出来,
//从以cell1命名的重用池里取
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentify];
//如果没有,新建一个cell,并放到重用池cell1里
if (!cell) {
cell = [[[CustomCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:cellIdentify] autorelease];//要加autorelease
}
//3.设置背景颜色,在if外面
[cell setBackgroundColor:[UIColorgreenColor]];
//取字典里的值
NSDictionary *dic = [_tableArrayobjectAtIndex:indexPath.row];
NSString *name = [dic objectForKey:@"name"];
cell.label.text = name;
return cell;//返回cell
7.点击触发事件
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *dictionary = [_tableArrayobjectAtIndex:indexPath.row];
//创建第二个界面,跳过去
SecondViewController *sec = [[SecondViewControlleralloc] init];
sec.dic = dictionary;
[sec release];
}
8.特殊的协议:
(1)返回值类型是数组的协议
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
- (NSArray *)indexPathsForRowsInRect:(CGRect)rect;
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
(2)返回值类型是UIView的协议
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath;
//第几个分区的高度是多少
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;