IOS表格

IOS中的表格视图由UITableView类型的对象负责。UITableView会显示一个具有多行但仅有一列的数据内容。如果控制器的主视图是UITableView,我们就把这样的控制器叫做表格视图控制器。在Cocoa Touch中对应的类为UITableViewController。

表格视图的组成部分

表格视图会显式一个列表,列表的每一个元素就是单元格,我们可以通过垂直滚动手势浏览这些单元格。表格视图是UITableView,它包含两部分内容。

  1. 容器部分:UITableView本身就是一个容器,它是UIScrollView的子类,并且包含了一个只能纵向滚动的单元格列表。
  2. 单元格:表格视图的容器中包含了单元格对象,是UITableViewCell类型。它具有四种不同的基础风格,我们还可以根据需要自定义其外观风格。

UITableView类型的对象属于表格视图对象,只负责显式一个表格及相关的界面信息,并不负责处理应用程序的逻辑和数据。因此当我们使用UITableView的时候,要注意:

  1. UITableView需要一个数据源。数据源中的数据会显示在表格视图的每个单元格中。数据源中的数据可以是任意Object-C对象,数据源对象必须符合UITableViewDataSource协议。
  2. UITableView还需要一个委托(UITableViewDelegate)。当用户对表格进行交互操作的时候,可以触发UITableViewController中相应的方法。
  3. 需要一个控制器去负责创建、管理和销毁这个UITableView。一般来说这个控制器就是UITableViewController类或其子类。
  4. 控制器UITableViewController是UIViewController的子类,因为名称上带有TableView,所以特指“具有表格视图”的控制器。一个表格视图控制器会扮演三个角色:数据源、控制器和委托。

数据源

我们通过实现UITableViewDataSource协议来达到数据加载到单元格。协议提供了2个方法,需要我们实现:

tableView: numberOfRowsInSection: 提供表视图分段的个数。

  tableView: cellForRowAtIndexPath: 提供表视图单元个所需要的数据。

如果要实现分组显示,则需要实现方法:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 提供表视图中分段的个数。

- (NSString *)tableView:(UITableView *)tableView  titleForHeaderInSection:(NSInteger)section 提供表视图中分段的Header信息。

委托

UITableViewDelegate协议提供了方法,会在点击单元格的时候被触发:

tableView: didSelectRowAtIndexPath: 该委托方法是表视图单元个选择之后发生触发。

单元格

UITableViewCell是UIView子类。因为表格视图中所呈现的每一行都是 UITableViewCell类型的对象,所以 UITableViewCell同时也是UITableView的子视图。需要注意,子类和子视图不是一回事,子类继承于父类,而子视图是被父视图包含的视图。

UITableViewCell本身有一个子视图,就是contentView。在contentView上我们可以绘制各种需要呈现的内容,文字、图片或指示器。contentView中有3个默认视图,2个是UILabel,属性名称为textLabel和detailLabel;第三个是UIImageView类型的对象,属性名称为imageView。

static NSString *SimpleCellIdentifier = @"SimpleCellIdentifier";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleCellIdentifier];

该语句为表视图单元格提供了一个标识,当上面的单元格滚出屏幕,下面的单元格滚入屏幕时候,可以通过判断这个标识是否有可以重用的单元格,如果有则重用,如果没有则创建一个新的。我们通过标识,来判断我们需要复用单元格。

你可能感兴趣的:(iOS)