对于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. android-上下文菜单的创建 - 随心

    //Menu设置//覆盖两个方法onCreateOptionsMenu(Menu menu).onOptionsItemSelected(MenuItem Item)//onCreateOptions ...

  2. jquery mmgrid使用

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

  3. hihocoder第三十六周 二分查找

    题目链接:http://hihocoder.com/contest/hiho36/problem/1 , 一个比较简单的二分. 算法: 由于数据量比较大,O(nlogn)无法通过,所以不能先排序再查找 ...

  4. PHP:php遍历数组 foreach echo() list()总结

    php中可以用来遍历数组的方法有很多,如有:foreach语句.list().each(),这几个也是主要的方法,现总结如下: foreach语句遍历数组 foreach语句用于循环遍历数组,每进行一 ...

  5. IBM中国

    https://www.ibm.com/developerworks/cn/linux/l-memory/

  6. C#Json数据交互

    问题:写项目时,难免会遇到前台和后台要进行数据交换,往前台传一个对象或一个对象集,往后台传一个对象,一个对象集.怎么传,你当然不能直接去传递一个对象或对象集,我们可以利用JSON数据相互之间传值. J ...

  7. Bootstrap历练实例:响应式标签页

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. java Html&JavaScript面试题:判断第二个日期比第一个日期大

    如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21 必须要保证用户的输入是此格式,并且是时间,比如说月份不大于12等等,另外我需要用户输入两个,并且后一个要比前一个晚,只允许用JAV ...

  9. java链接MySQL数据库时使用com.mysql.jdbc.Connection的包会出红线问题 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题

    package com.swift; //这里导入的包是java.sql.Connection而不是com.mysql.jdbc.Connection import java.sql.Connecti ...

  10. HttpServletRequest HttpServletResponse ServletException 重新打开后报红解决方法

    tomcat安装路径下\lib\servlet-api.jar 复制到Dynamic Web Project 的 WEB-INF/lib下,刷新