文章目录
  1. 1. UITableView 实现两个代理方法
    1. 1.1. UITableViewDataSource
      1. 1.1.1. 在.h文件中实现接口
      2. 1.1.2. 在.m文件中实现数据源
    2. 1.2. UITableViewDelegate
      1. 1.2.1. 在.h文件中实现接口
      2. 1.2.2. 在.m文件中实现委托代理

UITableView 实现两个代理方法

UITableViewDataSource

在.h文件中实现接口

代码如下:

1
2
3
4
5
@interface ViewController : UIViewController <UITableViewDataSource>
{
@private
UITableView *_tableView;
}

在.m文件中实现数据源

在loadView方法中设置

1
2
//设置数据源
_tableView.dataSource = self;

并重写数据源的两个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma mark - TableView DataSource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [self.listArray count];
}//section 中包含row的数量
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//定义一个静态标识符
static NSString *cellIdentifier = @"cell";
//检查是否有闲置单元格
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
//创建单元格
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
//给cell内容赋值
NSString *fontName = self.listArray[indexPath.row];
cell.textLabel.text = fontName;
cell.textLabel.font = [UIFont fontWithName:fontName size:14];
return cell;
}//创建单元格

UITableViewDelegate

在.h文件中实现接口

代码如下:

1
2
3
4
5
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
@private
UITableView *_tableView;
}

在.m文件中实现委托代理

在loadView方法中设置

1
2
//设置数据源
_tableView.delegate = self;

如要修改表格样式,则相应重写方法,如下重写cell选中方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//得到上一次选中 _index 如果是负数 IndexPath -> nil
NSIndexPath *lastIndex = [NSIndexPath indexPathForRow:_index inSection:0];
//得到上一次选中的cell
UITableViewCell *lastCell = [tableView cellForRowAtIndexPath:lastIndex];
//去掉上一次打勾标记
lastCell.accessoryType = UITableViewCellAccessoryNone;
//选中新一行
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
//选中打勾标记
cell.accessoryType = UITableViewCellAccessoryCheckmark;
_index = indexPath.row;
//0.5秒后执行取消选中方法取消选中阴影
[_tableView performSelector:@selector(deselectRowAtIndexPath:animated:) withObject:indexPath afterDelay:0.5];
}
文章目录
  1. 1. UITableView 实现两个代理方法
    1. 1.1. UITableViewDataSource
      1. 1.1.1. 在.h文件中实现接口
      2. 1.1.2. 在.m文件中实现数据源
    2. 1.2. UITableViewDelegate
      1. 1.2.1. 在.h文件中实现接口
      2. 1.2.2. 在.m文件中实现委托代理