以下是近期总结的关于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 = ;
self.tableView.sectionHeaderHeight = ;
返回指定 section 的头部和尾部高度:
 
  // 注意:用代理方法设置头部、尾部高度的优先级比通过属性设置要高
  // 即,代理设置的section头部或者尾部的高度会覆盖掉用属性设置的高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{ } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{ }
tableView的行高属性:
// 这个属性可以设置所有的行高,通过这个属性设置的行高都一样
self.tableView.rowHeight = ;
返回指定行的高度:
// 优先级比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){...}的优先级高!

UITableView的常用属性和代理方法的更多相关文章

  1. UITableView的常用属性和cell的内存优化

    UITableView的常用属性: 分割线颜色设置: 1> 设置separatorStyle: 分割线的颜色 方法:tableView.separatorStyle = UITableViewC ...

  2. ios开发UI篇—UIScrollView属性及其代理方法

    一.UIScrollView是什么? 1.UIScrollView是滚动的view,UIView本身不能滚动,子类UIScrollview拓展了滚动方面的功能. 2.UIScrollView是所有滚动 ...

  3. UITableView的一些常用设置和代理方法

    - (void)viewDidLoad { [super viewDidLoad]; tableview = [[UITableView alloc]initWithFrame:CGRectMake( ...

  4. 12-27 UITableView常用属性及方法

    UITableView也有自己的代理协议,它本身继承自UIScrollView 一:代理要遵守代理协议<UITableViewDelegate>,代理协议中的代理方法: 1.改变某一行的行 ...

  5. UITableView常用属性和方法 - 永不退缩的小白菜

    UITableView常用属性和方法 - 永不退缩的小白菜 时间 2014-05-27 01:21:00  博客园精华区原文  http://www.cnblogs.com/zhaofucheng11 ...

  6. UITableView的全部属性、方法以及代理方法执行顺序,看过之后肯定有收获---董鑫

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  7. UITableView表格视图、UITableView代理方法及应用

    一.基本知识点 UITableView表格视图,是一个可以滚动的界面(理解为垂直滚动的UIScrollView),可展示多行数据,没有行数的限制,只能有一列. 使用UITableView: 1.展示信 ...

  8. CoreAnimation 核心动画一 (一些常用属性 和 方法)

    1.常用属性: frame   bounds   center   alpha    Transition 过渡    transform 动画效果 2.常用方法: +(void)setAnimati ...

  9. UICollectionView的简单使用和常用代理方法

    UICollectionView相对于UITableView有更加自由的布局,做出的界面可变性更大最近开始接触使用UICollectionView,整理了一下常用的代理方法 首先需要先添加UIColl ...

随机推荐

  1. gzip: stdout: No space left on device问题的解决

    一.问题描述 最近安装了ubuntu14.04,并在ubuntu14.04中编译了一次内核.这之后大部分情况下用sudo apt-get install 安装应用都会出现“gzip: stdout: ...

  2. html5游戏-包围盒检测算法

    矩形包围盒算法:检测2个矩形是否重叠,在这样情况下要判断2个矩形是否碰撞只需要比较两个矩形顶点的坐标即可.假设矩形A用(x1,y1)表示左上角,(x2,y2)表示右下角,矩形B用(x3,y3)表示左上 ...

  3. 转 mvc项目中,解决引用jquery文件后智能提示失效的办法

    mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法   这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...

  4. 一步一步学swift之:自己写Api接口-PHP

    想要自己一个人完成app,那么后台接口也必须自己动动手.不用担心,其实很简单的,给自己信心!下面就以登录注册为例,做一个api接口 首先在mac上搭建PHP环境,下载 MAMP Pro for Mac ...

  5. netcore web.config ConnectionStrings AppSettings

    new ConfigurationBuilder().Build().GetSection("ConnectionStrings") new ConfigurationBuilde ...

  6. C#.NET 大型通用信息化系统集成快速开发平台 4.0 版本 - 用户权限树的实现 -- 权限递归树

    业务系统里经常会需要计算类似的树形权限树的业务需求 1:往往会有一些需求,a 对 b 有权限, b对c 有权限, 等等. 2:还需要很直观的看到,整个权限的树形关系,一目了然的那种. 3:程序调用简单 ...

  7. QT QMianWindow类

    QMianWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器等. QMainWindow ...

  8. EF分页中的陷阱

    (一) 前言                                                                   EF使用非常简单,但是如果使用不当就会误入EF陷阱中. ...

  9. 解决Package illuminate/html is abandoned, you should avoid using it. Use laravelcollective/html instead.问题

    解决步骤: 1.分析问题是因为laravel5.1不赞成使用illuminate/html而推荐使用laravelcollective/html包,所以我们利用composer命令移除illumina ...

  10. Code Review 五问五答

    Code Review 是什么? Code Review即代码审查,程序猿相互审核对方的代码. Code Review能获得什么好处? 提高代码可维护性 你写的代码不再只有编译器看了,你得写出审核人能 ...