<UITableViewDataSource, UITableViewDelegate>
_tableView.dataSource = self;
_tableView.delegate = self;
TableView的委托UITableViewDelegate
dataSource是UITableViewDataSource类型,主要为UITableView提供显示用的数据(UITableViewCell),指定UITableViewCell支持的编辑操作类型(insert,delete和reordering),并根据用户的操作进行相应的数据更新操作,如果数据没有更具操作进行正确的更新,可能会导致显示异常,甚至crush。
delegate是UITableViewDelegate类型,主要提供一些可选的方法,用来控制tableView的选择、指定section的头和尾的显示以及协助完成cell的删除和排序等功能。
二、具体实现
//初始化tableView
_tableView =[[UITableView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 64) style:UITableViewStyleGrouped];
style有两种:UITableViewStyleGrouped 和 UITableViewStylePlain
//初始化数组
_dataSourceArray = [[NSMutableArray alloc]initWithObjects:@"宋江", @"卢俊义", @"吴用", @"公孙胜", @"关胜", @"林冲", @"秦明", @"呼延灼", @"花荣", @"柴进", @"李应", @"朱仝", @"鲁智深", @"武松", @"董平", @"张清", @"杨志", @"徐宁", @"索超", @"戴宗", @"刘唐", @"李逵", @"史进", @"穆弘", @"雷横", @"李俊" ,@"阮小二", @"张衡", @"阮小五", @"张顺", @"阮小七", @"杨雄", @"石秀", @"解珍", @"解宝", @"燕青", nil];
协议里必须实现的两个方法:
#pragma mark cell的个数, 即行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _dataSourceArray.count;
}
#pragma mark cell的样式,即具体内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//设置重用池里cell的标示:
static NSString *identifier = @"Kevin";
//首先去重用池找是否有可利用的cell:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {//if(cell == nil),新建一个cell
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
*说明:initWithStyle有四种方式
}
//对cell的相关操作
//cell显示内容(应该是数组里的内容)
cell.textLabel.text = [_dataSourceArray objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageNamed:@"iconfont-dianhua.png"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.detailTextLabel.text = @"detailTextLabel";
for (NSInteger i = 0; i < 6; i++) {
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100 + 35 * i, 0, 30, 20)];
label.backgroundColor = [UIColor greenColor];
label.text = [NSString stringWithFormat:@"%ld", i];
[cell.contentView addSubview:label];
}
return cell;
}
结果如图:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 80;
}
#pragma mark 点击cell时触发的方法(调转到下一界面)
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath{
SecondViewController *second = [[SecondViewController alloc]init];
[self.navigationController pushViewController:second animated:YES];
}