IOS UITableView
UITableView表格式图,IOS开发中使用非常广泛的一个控件,继承自UIScrollView。
一:初始化
- (id)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;
typedef NS_ENUM(NSInteger, UITableViewStyle) {
UITableViewStylePlain,//和笔记本似的,有横线直角,如果数据少于tableView的高,下面会显示空白行。
UITableViewStyleGrouped//顶部会显示view
};
如果不想显示下面的空白格,设置tableView.tableFooterView= [[UIViewalloc]initWithFrame:CGRectZero];
如果不想显示系统默认的分割线,设置tableView.separatorStyle=UITableViewCellSeparatorStyleNone;
如果不想显示cell选中颜色,设置cell.selectionStyle=UITableViewCellSelectionStyleNone。
二:Cell
UITableViewCell(视图控件),tableView中每一行都是一个UITableViewCell对象,是tableView上的一个组成段元。系统提供的cell样式是比较局限的,不能完全满足多样化的开发需求。系统提供的UITableViewCell的样式是title、subTitle左侧可以显示image(比较简单)。
UITableView 对cell的重用机制:一般情况下,tableView最多会创建一屏+1个cell。tableView对cell的重用机制,能够最大限度的节省程序的内存开销,提高程序的运行效率,在开发中具有非凡的借鉴意义。tableView本身带有一个cell的可重用队列,滑出屏幕的cell,先到可重用队列中。从屏幕中即将出现的cell,先根据cell的可重用标识符去重用队列中拿已经存在的cell。
为了实现cell的多样化,一般通过继承UITableViewCell,得到子类,对子类进行视图控件的添加和功能的扩展(根据需求,定制cell)。继承UITableViewCell,根据需求,向cell中添加所需的视图控件. 还需要将数据填充到cell的各个控件中
用xib实现UITableViewCell定制
1、继承UITableViewCell创建一个cell的类
2、创建一个名为AppCell的空的Xib
3、控件拖拽一个UITableViewCell到xib中
4、去掉autolayout,opensin 改成xcode4.6
5、filesOwner 在代码中指定
6、选中xib中的tableViewCell,在class中将默认的UITableViewCell改成AppCell
7、向AppCell拖拽所需的控件,并设置好控件的属性
8、将需要重新赋值的控件与AppCell.h相关联
9、选中AppCell 设置cell的可重用标识符
//View从xib中加载不会调到initWithFrame方法
//View从xib中加载,会触发initWithCoder方法,如果想让View从xib中加载,子控件是通过代码的方式来添加到View中,那么创建和添加子控件的过程写在 initWithCoder中(重要)。
原生代码自定义cell
创建一个继承自UITableViewCell的cell即可。
自定义的tableViewCell,有时自定义的分割线会部分显示,解决方案simulator -> debug -> optimize rendering for window scale取消打勾就好。
三:代理
UITableView 不同于以前我们使用的控件,我们需要使用代理设置它的显示的数值。
tableView.delegate = self;
tableView.dataSource = self; //这个代理是管理数据的
四:NSIndexPath
NSIndexPath 作为行所在位置的描述类,indexPath.section,indexPath.row 分别带有行所在分区和分区中的第几行 (行的位置的信息)
indexPath.sectionsection段,indexPath.rowrow行
五:如何做一个Flicker(横向的tableView)
继承UIScrollView,重新写一个UITableView
六:如何做瀑布流WaterFlowView
放三个UITableView,联动滚动
七:
刷新数据后设置从头显示,[self.storeTableView setContentOffset:CGPointMake(0,0)];