zoukankan      html  css  js  c++  java
  • iOS中TableView小技巧

    摘要:

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


    1、去除多余的列表线条

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

    self.tableView.tableFooterView = [[UIView alloc] init];

    详细原理还没弄懂。知道的麻烦不吝赐教一下~


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

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

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


    3、滑动列表时收起键盘

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

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


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

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

    self.automaticallyAdjustsScrollViewInsets = NO;
    



    5、设置cell不可点击

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

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];


    6、依据indexPath获取相应的cell

    我们想要获取或者改动cell中的信息时。往往须要获取cell,在tableview的delegate中,我们一般仅仅能获取到indexPath这个參数。通过下面方法能够获取到相应的cell:

    UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];


    7、为cell设置不同高度

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

    // 首先依据内容改动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的切割线:

    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;



    9、设置section标题文字

    section支持直接定义标题文字,尽管不太好看。但能够满足主要的需求:

    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
        return @"标题";
    }




    持续探索更新中...


    转载请注明出处,谢谢

  • 相关阅读:
    CodeForces 546C(队列)
    N皇后摆放问题
    士兵队列
    货币问题
    C
    B
    ACM第三次比赛 Big Chocolate
    ACM比赛(第三次D)
    ACM第三次比赛UVA11877 The Coco-Cola Store
    uva 10382
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7359932.html
Copyright © 2011-2022 走看看