IOS TableView详解(一)
来源:互联网 发布:nginx linux内核优化 编辑:程序博客网 时间:2024/05/24 05:02
先考虑tableView中的cell,是变高还是等高,这个很重要,先考虑等高的情况:
一.cell等高
1.
新建一个类,使其继承UITableViewCell类,然后记得创建一个绑定的Xib文件
如果cell等高的话,那说明cell中的宽度已确定,高度也确定,那么最好先将xib中的cell的设计图扩大到实际的大小,这样才能看到真正的情况,这时候因为cell中的宽度,高度也确定,相当于一个宽高确定的View,所以,可以通过cell的右边界和下边界来限制里面的view
2.在tableView所在的ViewController中的viewDidLoad()方法中注册cell:
假如此cell的类名为reportListTableCell,那么先在ViewController的上面加上以下代码:
#define reportListTableCell @“reportListTableCell”
然后在viewDidLoad()方法中写入注册:
//意思即将reportListTableCell这个类压成一个nib文件
UINib *reportListCellNib = [UINib nibWithNibName:reportListTableCell bundle:nil];
//注册这个nib文件为自己的cell,此cell的标志也为@“reportListTableCell”,即其类名
[self.mySearchTableView registerNib:reportListCellNib forCellReuseIdentifier: reportListTableCell];
说到这里,其实标志位只是一个String,可以用其他String的,比如为@“1”,那么取的时候,输入标志位@“1”即可取出来reportListTableCell
我们将类名用作标志位,只是约定俗成的一种用法
3.实现tableView的协议
tableView有两个协议,分别为UITableViewDataSource和UITableViewDelegate,主界面在实现了这两个协议后,一定要记得在viewDidLoad方法里面加上以下代码,使其成为tableView的代理
self.tableView.dataSource = self;
self.tableView.delegate = self;
其中UITableViewDataSource是确定tableView中有多少cell的.
这里还有一点需要注意的是,ios中的tableView将cell分组的,即先得到有几个组,在得到每个组中在有几个cell,最后才能确认出来有多少cell
假如tableView中有三个组,那么这个tableView中cell的总数为三组中cell数量的总和
UITableViewDataSource中有两个方法必须实现:
//每组中有多少个cell, section为组号
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
//得到每个cell的方法,每个cell必须为UITableViewCell或者其子类
//因为我们已经在tableView中注册了cell,所以想要得到一个cell的话,可以通过这种方法得到
//reportListTableCell * oneCell = [tableView dequeueReusableCellWithIdentifier: reportListTableCell];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
其中indexPath为cell在tableView中所在位置的封装类NSIndexPath的对象
比如一个cell在tableView中的位置为第二组的第四个,那么他的位置的对象indexPath.section为1,indexPath.row为3
UITableViewDataSource中还有一个方法为可选实现,即为
//此方法得到tableView中的组数,不实现的话默认为1
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
另外一个协议UITableViewDelegate是响应tableView中的事件或者设置其高度的,比较重要的有下面两个方法:
//当用户点击某个cell的时候会调用的
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
//得到某个cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
注意,因为是先讨论的等高的情况,所以cell的高度是确定的,假如每个cell的高度是60,那么只要在上述方法中return 60即可
5.当我们想要刷新tableView的时候,只需要调用[self.tableView reloadData]即可
只要调用tableview的该方法就会自动重新调用数据源的所有方法
会自动调用numberOfSectionsInTableView
会自动调用numberOfRowsInSection
会自动调用cellForRowAtIndexPath
固定高度的tableView差不多先说到这
下一篇讨论变高的文章链接为 IOS TableView详解(二)
0 0
- IOS TableView详解(一)
- IOS TableView<一>
- IOS TableView 详解
- IOS TableView 详解
- IOS TableView详解(二)
- IOS TableView 详解
- iOS tableview 详解
- iOS TableView 使用详解
- ios tableView基本属性一:
- IOS开发之TableView详解
- 【iOS开发系列】tableView详解
- ios的tableView使用详解
- TableView代理方法详解(一)
- ios TableView那些事2(Swift 一) 初见TableView
- iOS UITableView(一)tableView的创建
- iOS开发笔记--TableView详解(2)
- iOS开发笔记--TableView详解(2)
- [ios]iOS学习之UITableView(一): 新手篇创建tableView
- 白盒测试的作用
- mysql中自定义函数编程
- java中Collections.sort排序详解
- Web前端开发大系概览 (迄今为止最全的互联网前端开发技术栈)
- HDU2.1.1 最小公倍数
- IOS TableView详解(一)
- [区间合并,优化] hdu5358多校联合 第六场 First one
- 解决winform窗体闪烁问题
- Bluetooth Keyboard Replace
- 最近项目中用hibernate分页查询的底层方法
- 南邮 OJ 1917 松牛的故事1
- excel操作之poi-ooxml
- 自定义View(1)
- 记忆存储的生理单元