IOS TableView详解(一)

先考虑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详解(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-09-29 17:07:48

IOS TableView详解(一)的相关文章

IOS TableView详解

一.建立 UITableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [DataTable release]; 二.UITableView各Method说明 //Section总数 - (NS

iOS疯狂详解之tableview编辑添加删除

// //  VkoWLAccountVC.m //  PocketUniversity // //  Created by long on 15-1-14. //  Copyright (c) 2015年 WLong. All rights reserved. // #import "VkoWLAccountVC.h" #import "VkoWLMoreTableViewCell.h" #define kIcoArray @[@"消息",@&

iOS疯狂详解之开源库

youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目---------- 电台:https://github.com/myoula/sostart ----------------iOS完整项目---------------- 1,

iOS SDK详解之NSScanner-分析String

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏,这里有很多基础的文章 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:NSScanner是分析String,把String转为substring和数字的很好的工具.它使用一个NSString初始化,使用的时候通常从开头处扫描直到结尾. 本文会先举出两个例子,然后详细的讲解NSScanner的方法.源码是

TableView 详解

1.建立tableView DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [DataTable release]; 2.section 总数 - (NSArray *)sectionIndexTitle

iOS ASIHTTPRequest详解

ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互. ASIHTTPRequest功能很强大,主要特色如下: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l 下载的数据,可存储到内存中或直接存储到磁盘中 l 能上传本地文件到服务端 l 可以方便的访问和操作请

iOS SDK详解之NSCoding协议

原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 欢迎关注我的iOS SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言:NSCoding是对iOS中的Model类进行编码和解码必须要遵循的协议,如果一个对象要被归档,那么这个协议是必须的. NSCoding要实现两个方法 - initWithCoder: //解码 - enc

iOS动画详解(学习动画看这一篇就够了)

iOS动画详解(学习动画看这一篇就够了) 一.基础知识 CAAnimation.png 二.CABasicAnimation 1. 动画的属性和解释 2.属性值的解释 repeatCount : 如果在swift中需要一直不断重复:Float.infinity,OC:HUGE_VALF timingFunction: timingFunction.png kCAMediaTimingFunctionLinear--在整个动画时间内动画都是以一个相同的速度来改变.也就是匀速运动.一个线性的计时函数

iOS插件详解之----CLangFormat(代码格式化管理插件)(2016.1.12王彬)

iOS插件详解之----CLangFormat(代码格式化管理)(2016.1.12王彬) 虽然在项目创建和团队组建的初期,我们就把公共约定以及一些规范定下来了,并且由于我们的代码是通过Git来做版本控制的,web上直接就支持Markdown格式的readme文件,可以随时看到最新的版本,但是这种规范只能依靠个人的意识,或者通过代码Review来解决,而且做代码Review的时候,你也不好意思总是写上一堆诸如“这里要加个空格”.“那里要加上换行”的评论吧?如果不管,久而久之,会因为每个人的习惯不