对于UITableView的基础使用我这边就不做重复介绍了

我重点就来介绍下如何实现大部分新闻的界面。也就是第一条记录显示大图片下面加一段文字说明

然后剩下来的内容全部显示为文字图片的格式

其实要做到这样的效果是非常容易。

我们首先先了解一下UITableView的几个方法

//分组数

//如果我们的数据有分组的话 那就需要在.M文件中加入该方法,并返回分组数有多少组数据 就返回多少

//我一般是在做个人信息页面或者信息提交等页面的时候会用到分组的样式

//需要注意的是此方法与 返回分组 每组数据个数的方法   以及 分组组名 方法  一起使用

-(NSInteger) numberOfSectionsInTableView

//分组组名

//此方法是用来设置 分组组名的  我们就可以根据section的值来判断是第几组,然后返回不同的标题,如果没有 标题的话 可以返回 @""

-(NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:

//分组每组的个数

//此方法用来返回分组的每组个数。如果分组是固定的话 那么可以返回固定的值。

//而对于一些分组是特殊的 则可以根据section的值来判断是第几组 接着再返回对应的组数

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:

//行选择事件

//顾名思义 就是行选择事件,此事件会在你点击了对应的行之后触发,一般对于新闻页面来说就是跳转到新闻的详细页面

//而对于一些个人信息修改的操作的话则可以进入到相对应的个人信息修改界面。

//大家可以自行根据IndexPath 的Row和Section来进行判断点击的是哪个然后进行一些特殊的处理

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:

//行高度事件

//此方法是用来设置UITableView每一行的行高的事件。如果不重写此方法的话他会返回默认的值

//如果要实现上面的效果的话 我们就必须要重写该方法。

//我们要做到的效果就是第一条数据显示大图片,后面的显示普通记录

//所以就要修改该方法  判断 indexpath.row ==1  如果等于则返回200  否则返回50  (具体高度根据实际情况返回)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

 

//我称该方法为行绘制事件

//此方法就是本文的重中之重了,所有的效果均由此方法来实现

//UITableView的行绘制全部在这里实现。(这边当时出了小BUG还是比较纠结的。以后会讲到)

//我们如果能控制好该方法 那么基本上能利用UITableView实现大部分的界面效果了

//我们可以这么理解  其实  UITableView 只是一个容器, 就类似于一个list 类

//而我们的UITableViewCell 才是里面具体显示的效果

//所以如果要实现各种各样的效果 我们只需要“定制”特定的UITableViewCell然后根据相关的数据 选择使用哪一种UITableViewCell的样式就可以了

-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:

本篇就讲这么多吧。主要内容就是 将UITableView的几个方法 单独拿出来讲解了 一下(红色字体为重要内容,相信只要理解了该部分就能很好的使用UITableView了)

下一篇会讲如何自定义  UITableViewCell

另外附上一段

-(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:

的代码 供大家参考(只是我个人比较笨的使用方法)

 -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *haveImage=[[NSString alloc] initWithString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
if([haveImage isEqual:@"False"])
{
//static NSString *SignleNoImageIdentifier=@"SignleIdentifier";
static NSString *SignleNoImageIdentifier=@"SignleNoImageIdentifier";
SignleNoImageTableViewCell *cell= (SignleNoImageTableViewCell *)[tableView dequeueReusableCellWithIdentifier:SignleNoImageIdentifier];
if(cell==nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SignleNoImageTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:];
}
cell.mylabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
return cell;
}
else
{
if([indexPath row]==)
{
// static NSString *TopbigImageIdentifier=@"SignleIdentifier";
static NSString *TopbigImageIdentifier=@"TopbigImageIdentifier";
TopBigImageCell *cell= (TopBigImageCell *)[tableView dequeueReusableCellWithIdentifier:TopbigImageIdentifier];
if(cell==nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TopBigImageCell" owner:self options:nil];
cell = [nib objectAtIndex:];
}
cell.btlabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
NSData *newimage=[Base64AndImageHelp mydataWithBase64EncodedString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
UIImage *newjiaban=[[UIImage alloc] initWithData:newimage];
cell.myimageView.image=newjiaban;
return cell; }
else
{
static NSString *SignleIdentifier=@"SignleIdentifier";
SingleTableViewCell *cell= (SingleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:SignleIdentifier];
if(cell==nil){
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SingleTableViewCell" owner:self options:nil];
cell = [nib objectAtIndex:];
}
cell.mylabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
NSData *newimage=[Base64AndImageHelp mydataWithBase64EncodedString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
UIImage *newjiaban=[[UIImage alloc] initWithData:newimage];
cell.myimageView.image=newjiaban;
return cell; } }
}

IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明的更多相关文章

  1. IOS开发---菜鸟学习之路--(十七)-利用UITableView实现个人信息界面

    首先来看下我们要实现的效果 需要实现这样的效果 然后我们开始动手吧. 首先选择添加一个新的ViewController 然后打开XIB文件,添加一UITableView 并将样式设置为分组 同时将按住 ...

  2. IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路

    在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...

  3. IOS开发---菜鸟学习之路--(一)

    PS(废话): 看了那么多的博客文章,发现大部分人都一直在强调写技术博客的重要性,索性自己也耐着性子写写看吧. 写博客的重要性之类的说明,我就不做复制黏贴的工作了.因为自己没有写过多少,所也不清楚是不 ...

  4. IOS开发---菜鸟学习之路--(二十三)-直接利用键值对的方式来处理数据的感想

    首先声明,本文纯粹只是做为本人个人新手的理解.文中的想法我知道肯定有很多地方是错的. 但是这就是我作为一个新人的使用方法,对于大牛非常欢迎指导,对于喷子请绕道而行. 由于这是早上跟我学长讨论数据处理时 ...

  5. IOS开发---菜鸟学习之路--(十六)-将Image转换为Base64

    我们直接在.m文件的引用头文件部分 和 @interface   AddPictureViewController () 之间  加入 增加部分的代码 然后就可以使用图片转Base64了 #impor ...

  6. IOS开发---菜鸟学习之路--(八)-实现新闻页面

    本章将具体讲述如何结合前两张的内容最终实现一个新闻页面的雏形 之所以称之为雏形,是因为本章实现的内容只是实现了最基础的效果 还有很多其他诸如下拉刷新 页面导航等效果都需要投入一些时间进行研究 好了直接 ...

  7. IOS开发---菜鸟学习之路--(四)-登陆界面

    本篇的内容其实大家 参照橘子的那本开发的书的话  上面讲解的是更详细的 一些实现. 我这边唯一的区别就是 做了网络数据的获取 以及 验证成功后 进行界面的跳转.. 第四篇了 本篇主讲登陆模块 首先先放 ...

  8. IOS开发---菜鸟学习之路--(十)-实现新闻详细信息浏览页面

    前面已经将了上下拉刷新 实现了上下拉刷新后我们的第一级界面就做好,接下来我们就需要实现 新闻详细信息浏览了 我个人认为一般实现新闻详细页面的方法有两种(主要是数据源的不同导致了方法的不同) 第一种是本 ...

  9. IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新

    本章主要讲解如何利用PullingRefreshTableView实现下拉(上拉)刷新的操作 PullingRefreshTableView 实现上下拉刷新的例子百度有很多,大家可以自己搜索下,先看下 ...

随机推荐

  1. Spring Boot相关组件的添加

    在勾选相关组件后, pom.xml文件上发生了根本的变化 1.这是最简单的项目的pom文件 <?xml version="1.0" encoding="UTF-8& ...

  2. jquery mmgrid使用

    参考 http://miemiedev.github.io/mmGrid/examples/index.html

  3. 百倍性能的PL/SQL优化案例(r11笔记第13天)

    我相信你是被百倍性能的字样吸引了,不过我所想侧重的是优化的思路,这个比优化技巧更重要,而结果嘛,其实我不希望说成是百倍提升,“”自黑“”一下. 有一个真实想法和大家讨论一下,就是一个SQL语句如果原本 ...

  4. jquery-weui picker组件实现只选择年月

    var date = new Date() var month = date.getMonth()+1 //获取当前月份 $('#selectTime').picker({ toolbarTempla ...

  5. C#之linq

    本文根据30分钟LINQ教程学习作的笔记. 1.Guid.Empty Guid 结构: 表示全局唯一标识符 (GUID).Empty字段:Guid 结构的只读实例,其值均为零.用来设置初始值.   G ...

  6. 往ABAP gateway system上和Cloud Foundry上部署HTML5应用

    ABAP Gateway system 在我的公众号文章里有详细介绍:SAP Fiori应用的三种部署方式 用WebIDE部署 用Eclipse Team provider部署 执行report /U ...

  7. 使用JDBC操作SAP云平台上的HANA数据库

    本文假设您对JDBC(Java Database Connectivity)有最基本的了解.您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客AD ...

  8. TFS看板晨会

    迭代任务看板 打开任务看板 打开燃尽图查看剩余工作情况,如果离发布较近,但是还有很多剩余工作,可能需要提前准备移除一部分优先级低的需求,如果剩余工作较少,适当安排一些需求 任务板按照人员分组,查看每个 ...

  9. 【翻译】22款HTML & CSS3 UI工具包免费下载

    下面盘点了22款适用于网页设计的HTML&CSS3 UI工具包,并且全部都是免费的哦!喜欢就赶紧 下载或收藏吧.这些免费工具可以加速你的网页开发进程,让你有更多时间专注于其他更重要的部分.由于 ...

  10. 忽略mysql库的同步

    忽略mysql库的同步,请使用: stop slave sql_thread; change replication filter replicate_ignore_db=(mysql);