文档章节

IOS 9 UITableView整理

 钟淳亚
发布于 2015/11/13 16:58
字数 690
阅读 308
收藏 0

首先,UITableView有两种风格:UITableViewStylePlain和UITableViewStyleGrouped。

然后,UITableViewCellStyle的样式

typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
    UITableViewCellStyleDefault,   // 左侧显示textLabel(不显示detailTextLabel),imageView可选(显示在最左边)    
    UITableViewCellStyleValue1,    // 左侧显示textLabel、右侧显示detailTextLabel(默认蓝色),imageView可选(显示在最左边)    
    UITableViewCellStyleValue2,    // 左侧依次显示textLabel(默认蓝色)和detailTextLabel,imageView可选(显示在最左边)    
    UITableViewCellStyleSubtitle   // 左上方显示textLabel,左下方显示detailTextLabel(默认灰色),imageView可选(显示在最左边)};

当然也可以自定义TableViewCell。

要使用UITableView必须要实现两个协议UITableViewDataSource和UITableViewDelegate,并实现必要的代理方法。

必须要实现的有两个

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

这两个方法分别返回每组中的行数,所展示的tableviewcell

可选的有

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; //tableview总共多少组,默认为1
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section; 
- (nullable NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;

上面两个方法返回每组头部和尾部的文本,前提是实现了另外三个方法,才能展现,下面三个方法是用来分别设置每一行,每组头部,每组尾部的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;

如果只是设置title过于简单,还可以自定义view加入头部和尾部,如下面两个方法

- (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;  
- (nullable UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section;

UITableView的每一行点中之后有相应的响应事件,通过实现下面的方法实现

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;

UITableView默认还可以想微信一样编辑每一行,通过两个方法实现

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath;
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath;

第一个用来设置是否可编辑,默认是YES,第二个用来设置可以怎么编辑cell,如下示例代码

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewRowAction *topRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        NSLog(@"1111");
    }];
    topRowAction.backgroundColor = [UIColor blueColor];

    UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
        NSLog(@"2222");
    }];
    deleteRowAction.backgroundColor =[UIColor redColor];
    return @[topRowAction, deleteRowAction];
}



选中每个cell时默认会有选中状态,如下结构体:

typedef enum { 
    UITableViewCellSelectionStyleNone, 
    UITableViewCellSelectionStyleBlue, 
    UITableViewCellSelectionStyleGray 
} UITableViewCellSelectionStyle

如果不需要选中状态,可以设置为

UITableViewCellSelectionStyleNone

当然也可以在下面方法中设置

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
}



UITableView支持设置索引,只要在以下方法中返回每组的index就行

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView



要让UITableView展示数据,就必要在数据源到位后调用reloadData方法,会刷新整个tableview,当然也可以单独刷新某一组或者某一行,代码如下

//section
NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:index];
[tableview reloadSections:indexSetwithRowAnimation:UITableViewRowAnimationAutomatic];
//cell 
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:row inSection:section];   
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationNone];


© 著作权归作者所有

共有 人打赏支持
上一篇: IOS UIApplication
粉丝 0
博文 3
码字总数 1315
作品 0
南京
私信 提问
iOS开发tips-神奇的UITableView

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/71436920 概述 UITableView是iOS开发中使用频率最高的UI控件,在前面的文章中对于...

KenshinCui
2017/05/08
0
0
iOS开发小技巧:刷新UITableView

在很多APP界面都用到的UITableView,对iOS开发者来说一定不陌生吧。网上关于UITableView的文章早已多不胜数,尤其是关于UITableView优化方面的,对开发者来说非常值得一看。 现在就来看看,刷...

flyurt
2015/10/23
1K
0
iOS开发tips-UITableView、UICollectionView行高/尺寸自适应

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/55002487 UITableView 我们都知道UITableView从iOS 8开始实现行高的自适应相对比...

KenshinCui
2017/02/12
0
0
IOS学习,最简单的表格应用程序,学习,列出博客

IOS编程浅蓝教程,这是博客地址http://www.cnblogs.com/haichao/category/425378.html IOS编程浅蓝教程:锲子 IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备 IOS编程浅蓝教程(二) Hel...

andy521zhu
2015/01/17
0
0
iOS开发技巧(系列十:UITableView及其Cell的一些细节)

今天看开源代码,有些UITableView方面细节的东西,整理了与大家共享, 1、设置UITableViewCell的accessoryView 有时候我们需要设置cell的一些样式,比如下图, 这个就是设置了cell的accesso...

召唤攻城狮
2014/05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
9
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
2
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部