zoukankan      html  css  js  c++  java
  • UITableView的常用属性和代理方法

    以下是近期总结的关于tableView的一些属性和代理方法,以及一些常见的问题,现汇总如下,今后还会持续更新,请继续关注:
     
    tableView 的头部和尾部视图属性:
        UISwitch *footerView = [UISwitch new];
        UISwitch *headerView = [UISwitch new];
        self.tableView.tableHeaderView = headerView;
        self.tableView.tableFooterView = footerView;
    注意:不能给tableHeaderView和tableFooterView设置同一个UIView。否则只有headerView没有footerView。
     
    返回指定 section 的头部和尾部视图:
    // 这是tableView的代理方法
    - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
    {
         // 可以返回指定section的尾部视图
    }
    
    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
         // 可以返回指定section的头部视图
    } 
    section 的头部和尾部高度属性:
    sectionFooterHeight和 sectionHeaderHeight为组头和组尾高度,默认都为10.(已经验证过)
        self.tableView.sectionFooterHeight = 30;
        self.tableView.sectionHeaderHeight = 30;
    返回指定 section 的头部和尾部高度:
     
      // 注意:用代理方法设置头部、尾部高度的优先级比通过属性设置要高
      // 即,代理设置的section头部或者尾部的高度会覆盖掉用属性设置的高度
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
    
    }
    
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
    
    }
    tableView的行高属性:
    // 这个属性可以设置所有的行高,通过这个属性设置的行高都一样
    self.tableView.rowHeight = 20;
    返回指定行的高度:
    // 优先级比tableView的rowHeight属性要高
    // 这是tableView的代理方法
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
    }
    问题:如何让tableView的头部标题具有悬停效果?
    第一种情况:UIViewController里面添加一个UITableView控件的情况下。
         此时需要设置tableView的style为plain样式。然后再数据源方法- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView中返回tableView的section个数。
         如果tableView的style为grouped样式,则没有悬停效果,即使是分组样式的!
     
    第二种情况:UITableViewController自带的UITableView控件的情况下。
         和第一种情况一样,也需要设置tableView的style为plain样式。否则没有头部标题悬停效果。
     
    报错:
     reason: 'unable to dequeue a cell with identifier cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
     
    原因之一:
    UITableViewCell *ce = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
     
    报错:
    Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - perhaps the designated entry point is not set?
    原因:
    没有指定initial View Controller
     
    开发技巧:plain单组样式下,如何避免多余的那些没有显示数据的celly依旧显示在屏幕上?
    解决方法一:设置tableView的style为grouped并且numberOfSection = 1
    解决方法二:给tableView设置tableFooterView = [[UIView alloc] init];
     
    cell优先级问题:
    注意点:注册cell类型比storyBoard中绑定的cell优先级高,所以如果注册了cell的类型,那么就不会去storyBoard中找绑定的cell。
     
    注册xib的cell类he和注册的代码的cell类和比if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];方式创建的cell优先级都高。
     
    换言之,注册的要比代码的优先级高(已验证)即: 
    [self.tableView registerNib:[UINib nibWithNibName:@"WSCell" bundle:nil] forCellReuseIdentifier:cellID];
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID]; 的优先级 >
    if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
     }
    至于注册xib和注册非xib的cell,哪个优先级高,这就不确定了!
    我验证的结果是:需要看他们的注册顺序,也就是代码顺序。后注册的那一个类型的cell优先级高,我认为是后者把前者覆盖(因为他们的reuseIdentifier相同,所以只允许注册一个)。如下注册了两个类型的cell,但是因为reuseIdentifier相同,所以只有最后一个生效,也就是红色的生效。
     
    [self.tableView registerNib:[UINib nibWithNibName:@"WSCell" bundle:nil] forCellReuseIdentifier:cellID];
       
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID];
    总之记住一句话:不管是系统自带的cell还是纯代码自定义的cell还是xib自定义的cell,只要是注册的cell类,就比if(!cell){...}的优先级高!
  • 相关阅读:
    js重要函数
    js判断是否为空
    checkbox选择框如果被选中value值就可以传过去,没有被选中value就不能穿过去(调试了近一天,坑爹的说)
    js常用点
    常用jdbc操作
    java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 1
    com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 2 无效 待整理
    OOAD和UML
    .net 外部CSS文件不起作用总结
    线程读书笔记
  • 原文地址:https://www.cnblogs.com/wsnb/p/4916153.html
Copyright © 2011-2022 走看看