ios晋级之路-tableView数据源方法详解

好像很久没有更新了,不过搞开发是一个长久学习的一个过程!加油

今天小小的研究了一下tableView的数据源方法

ios 9.0的官方文档有这么一句话,大致意思是数据源方法是通过协议像tableView对象传递数据模型,并且传递了所需要的标示图信息(这里包括section row的一些配置)和对表视图的修改。这是对UITableViewDataSource的一个总体概述。

数据源方法大体分为三大类

1.配置tableView

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

2)- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableVIew

3)- (NSInteger)tableView:(UITableVIew*)tableView numberOfRowInSection:(NSInteger)section

以上三个方法是最基本的也是必须实现的数据源方法 分别是组数、组内的行数、和每行的Tableviewcell这里不详细解释了

4)- (NSArray<NSString *>*)sectionIndexTitlesForTableView:(UITableView *)tableView

这个方法是在设置了UITableViewStylePlain才会有效的,返回值是一个字符串数组比如这里我们返回

@[@"A",@"B",@"C",@"D",@"E"]

ios晋级之路-tableView数据源方法详解_第1张图片

这里会显示在上图右侧,也就是这个索引。

5)- (NSInteger)tableView:(UITableView*)tableView sectionForSecctionIndexTitle:(NSString*)title atIndex:(NSInteger)index

首先这个方法是配合方法4)的,是在点击右侧索引后执行的,所以要先实现方法4)参数title是当前点击索引的标题(例如点击A 那返回的就是A咯)参数index返回的是点击索引的编号,返回值是一个整形数代表这点击索引之后跳转的位置如果返回1那么按照上图section的header或者footer(这个要你自己设置的以下有设置header或footer的代理方法)就会出现到屏幕上,这里一般我们直接返回index,起到一个查找的作用。

6)-(NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section

这个方法是设置sectionHeader的,section是当前对应的组的编号,header是现实在每个组的最上面的,相反下面这个方法Footer是现实在这个组最下面的

7)-(NSString*)tableView:(UITableView*)tableView titleForFooterInSection:(NSInteger)section

这个方法上面已经解释过了

2.插入或者删除tableView中的行

1)- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath

控制是否出现删除按钮,返回Yes出现,No不出现,这个方法如果不实现,只要实现了方法2)则默认返回Yes如右图ios晋级之路-tableView数据源方法详解_第2张图片

2) - (void)tableView:(UITableView*)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexpath

点击删除按钮时调用该方法(具体怎么删除由自己操作)

3.重新整理table的行

注意如果想移动行的话要先实现如下方法

[_tableView setEditing:YES animated:YES];

1) - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath

告诉数据源这个行是否可以被移动

2)

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath

当行移动的时候后,告诉数据源你从哪一行移动到了另一行。

你可能感兴趣的:(ios晋级之路-tableView数据源方法详解)