UITableView 详细介绍

什么是 UITableView?

UITableView 是一个最常用的用户界面对象,它在一列中的多行可滚动列表中显示数据,也可以分为几个部分。它只允许垂直滚动,并且是 UIScrollView 的子类。

为什么我们使用 UITableView?

我们可以使用 UITableView 来显示可以选择的选项列表,浏览分层结构化数据,呈现项目索引列表,使用部分在视觉上不同的分组中显示详细信息和控件。

我们可以在我们的联系人,邮件列表等中查看 UITableView 的使用。它不仅仅被用于呈现文本数据,而且还可以列出图像和文本,例如在 YouTube 应用程序中。

有关使用 Story Board 设置或安装 UITableView 的详细说明

  1. 为 Single View 应用程序创建一个简单的项目。
  2. 在对象库中,选择表视图对象并将其拖动到视图控制器的视图中。只需运行项目,你将看到一个带有线条的空白页面。
  3. 现在,如果你只想要一个带内容的可滚动视图,则将 UIView 拖入 UITableView,调整其大小并根据需要将其余的 UIElements 拖动到该视图中。但是如果你想要一个类似格式的列表,我们使用 UITableViewCell
  4. UITableViewCell 类定义 UITableView 对象中出现的单元格的属性和行为。此类包括用于设置和管理单元格内容和背景(包括文本,图像和自定义视图),管理单元格选择和突出显示状态,管理附件视图以及启动单元格内容编辑的属性和方法。
  5. 使用 UITableViewCell 的最佳部分是可重用性。dequeueReusableCellWithIdentifier 的目的是使用更少的内存。例如,如果你有一个包含 1000 个条目的列表,并且一次只能看到 10 个条目,则只有可见单元格在内存中分配,其余部分将在用户滚动列表时重复使用。你需要做的就是拖动 UITableViewCell 并放到 tableView。然后单击单元格 - >转到属性检查器 - >将 tableView 样式设置为自定义,并将标识符设置为你想要的任何唯一的 myCell。
  6. 现在我们需要符合数据源,以便对象将数据提供给另一个对象。例如,UITableViewDataSource 协议具有诸如 cellForRowAtIndexPath 和 numberOfRowsInSection 之类的方法,用于指示应该在表中显示的内容。委托类型对象响应另一个对象所采取的操作。例如,UITableViewDelegate 协议具有诸如 didSelectRowAtIndexPath 的方法,用于在用户选择表格中的特定行时执行动作。7.当你符合数据源时,你需要实现其所需的方法,即
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
        // Here you need to give the total number of items you want to list. For example if you want list of 2 numbers, then:

           return 2; 

 }

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//Here you need to dequeue the reusable cell which we discussed in point 5. Then you can modify your cell here according to you and customize it here as per your requirement. Here the call comes for numberOfRows number of times. 

static NSString *cellIdentifier = @"cellID";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
cellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:
    UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
} 
if(indexPath.row){
    [cell.textLabel setText:"1"];
}else{
    [cell.textLabel setText:"2"];
}

return cell;
}
  1. 关于 NSIndexPath: - NSIndexPath 类表示嵌套数组集合树中特定节点的路径。此路径称为索引路径。它的对象总是长度为 2.它们用于索引表格视图单元格。NSIndexPath 对象中的第一个索引称为节,第二个是行。第 0 部分和第 0 行的索引路径对象表示第一部分中的第一行。使用 [NSIndexPath indexPathForRow:inSection:] 快速创建索引路径。