首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >iOS中TableView小技巧

iOS中TableView小技巧

作者头像
Cloudox
修改2021-11-23 14:28:06
修改2021-11-23 14:28:06
1.4K0
举报
文章被收录于专栏:月亮与二进制月亮与二进制

TableView是ios开发中经常用到的控件,这里统一记录一下开发中遇到的常用小技巧,不断探索更新,也希望大家可以告诉我更多常用的小技巧啦~一起进步。

1、去除多余的列表线条

原始的TableView在没有数据的行也会显示一条条的线条,不太美观,用一行代码可以解决,一般放在ViewDidLoad中

代码语言:javascript
复制
self.tableView.tableFooterView = [[UIView alloc] init];  

2、选中列表条目后取消选中的背景颜色

不处理的情况下,选中一行后,该行会保持被选中的背景色,一般我们不希望其保持,而是一闪而过告知用户选中过就好了,在TableView的Delegate方法中实现:

代码语言:javascript
复制
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {  
    [tableView deselectRowAtIndexPath:indexPath animated:YES];// 选中后取消选中的颜色  
}  

3、滑动列表时收起键盘

一般列表都会伴随着搜索框或其他输入框,我们在输入时弹出键盘,但是滑动列表时就表示我已经输入完毕了,不希望键盘保持在界面上,而是自动收起,同样是在TableView的Delegate方法中实现,但是是用的ScrollView的方法,让搜索框之类的放弃第一响应即可:

代码语言:javascript
复制
// 滑动时收起搜索框的键盘  
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {  
    [self.searchBar resignFirstResponder];  
} 

4、去掉NavigationController下的TableView顶部出现的空白区域

iOS 7 中viewcontroller新增了属性automaticallyAdjustsScrollViewInsets,即是否根据按所在界面的navigationbar与tabbar的高度,自动调整scrollview的 inset,把它设置为NO就好了:

代码语言:javascript
复制
self.automaticallyAdjustsScrollViewInsets = NO;  

5、设置cell不可点击

有时候我们的列表只是为了展示某些内容,而不需要用户点击,也不希望用户点击,虽然上面第二条可以设置点击后取消选中,但是还是会有一个动画效果存在,这个方法可以让点击彻底没有效果,明确地告诉用户不能点击列表:

代码语言:javascript
复制
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];  

6、根据indexPath获取对应的cell

我们想要获取或者修改cell中的信息时,往往需要获取cell,在tableview的delegate中,我们一般只能获取到indexPath这个参数,通过以下方法可以获取到对应的cell:

代码语言:javascript
复制
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];  

7、为cell设置不同高度

常规情况下,我们的cell都是同样的高度的,但是一些特殊情况下,比如cell内有一个label,这个label显示的内容是根据文字长度变换label高度的,这时我们不能单单变换label的高度,还要相应的改变cell的高度,才能正确地显示内容,通过以下方法动态地设置cell高度:

代码语言:javascript
复制
// 首先根据内容修改cell高度  
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    ……  
    // 获取cell的frame  
    CGRect cellFrame = [cell frame];  
  
    // 根据内容改变cell高度 ……  
    // ……  
  
    // 修改cell的frame  
    [cell setFrame:cellFrame];  
  
    return cell;  
}  
  
// 别忘了这里也要变  
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  
{  
    UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];  
    return cell.frame.size.height;  
}  

8、设置cell下方无分割线

如果我们想自己设计cell之间的分割线,就需要把cell之间的分割线全部去掉,通过下面的代码去除cell的分割线:

代码语言:javascript
复制
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;  

9、设置section标题文字

section支持直接定义标题文字,虽然不太好看,但可以满足基本的需求:

代码语言:javascript
复制
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {  
    return @"标题";  
}  
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、去除多余的列表线条
  • 2、选中列表条目后取消选中的背景颜色
  • 3、滑动列表时收起键盘
  • 4、去掉NavigationController下的TableView顶部出现的空白区域
  • 5、设置cell不可点击
  • 6、根据indexPath获取对应的cell
  • 7、为cell设置不同高度
  • 8、设置cell下方无分割线
  • 9、设置section标题文字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档