IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明

简介: 对于UITableView的基础使用我这边就不做重复介绍了 我重点就来介绍下如何实现大部分新闻的界面。也就是第一条记录显示大图片下面加一段文字说明 然后剩下来的内容全部显示为文字图片的格式 其实要做到这样的效果是非常容易。

对于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:

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

 

 1 -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 2 {
 3     NSString *haveImage=[[NSString alloc] initWithString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
 4     if([haveImage isEqual:@"False"])
 5     {
 6          //static NSString *SignleNoImageIdentifier=@"SignleIdentifier";
 7     static NSString *SignleNoImageIdentifier=@"SignleNoImageIdentifier";
 8         SignleNoImageTableViewCell *cell= (SignleNoImageTableViewCell *)[tableView dequeueReusableCellWithIdentifier:SignleNoImageIdentifier];
 9         if(cell==nil){
10             NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SignleNoImageTableViewCell" owner:self options:nil];
11             cell = [nib objectAtIndex:0];
12         }
13         cell.mylabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
14         return cell;
15            }
16     else
17     {
18         if([indexPath row]==0)
19         {
20             // static NSString *TopbigImageIdentifier=@"SignleIdentifier";
21             static NSString *TopbigImageIdentifier=@"TopbigImageIdentifier";
22             TopBigImageCell *cell= (TopBigImageCell *)[tableView dequeueReusableCellWithIdentifier:TopbigImageIdentifier];
23             if(cell==nil){
24                 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TopBigImageCell" owner:self options:nil];
25                 cell = [nib objectAtIndex:0];
26             }
27              cell.btlabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
28             NSData *newimage=[Base64AndImageHelp mydataWithBase64EncodedString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
29             UIImage *newjiaban=[[UIImage alloc] initWithData:newimage];
30             cell.myimageView.image=newjiaban;
31             return cell;
32             
33         }
34         else
35         {
36             static NSString *SignleIdentifier=@"SignleIdentifier";
37             SingleTableViewCell *cell= (SingleTableViewCell *)[tableView dequeueReusableCellWithIdentifier:SignleIdentifier];
38             if(cell==nil){
39                 NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SingleTableViewCell" owner:self options:nil];
40                 cell = [nib objectAtIndex:0];
41             }
42              cell.mylabel.text=[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"title"];
43                     NSData *newimage=[Base64AndImageHelp mydataWithBase64EncodedString:[[[_list objectAtIndex:[indexPath section]] objectAtIndex:[indexPath row]] valueForKey:@"images"]];
44             UIImage *newjiaban=[[UIImage alloc] initWithData:newimage];
45             cell.myimageView.image=newjiaban;
46             return cell;
47             
48         }
49 
50  
51     }
52 }

 

 

目录
相关文章
|
13天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
54 1
|
20天前
|
设计模式 安全 Swift
探索iOS开发:打造你的第一个天气应用
【9月更文挑战第36天】在这篇文章中,我们将一起踏上iOS开发的旅程,从零开始构建一个简单的天气应用。文章将通过通俗易懂的语言,引导你理解iOS开发的基本概念,掌握Swift语言的核心语法,并逐步实现一个具有实际功能的天气应用。我们将遵循“学中做,做中学”的原则,让理论知识和实践操作紧密结合,确保学习过程既高效又有趣。无论你是编程新手还是希望拓展技能的开发者,这篇文章都将为你打开一扇通往iOS开发世界的大门。
|
21天前
|
搜索推荐 IDE API
打造个性化天气应用:iOS开发之旅
【9月更文挑战第35天】在这篇文章中,我们将一起踏上iOS开发的旅程,通过创建一个个性化的天气应用来探索Swift编程语言的魅力和iOS平台的强大功能。无论你是编程新手还是希望扩展你的技能集,这个项目都将为你提供实战经验,帮助你理解从构思到实现一个应用的全过程。让我们开始吧,构建你自己的天气应用,探索更多可能!
44 1
|
14天前
|
移动开发 前端开发 Swift
iOS 最好的应用程序开发编程语言竟然是这7种
iOS 最好的应用程序开发编程语言竟然是这7种
49 8
|
12天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
16天前
|
安全 Swift iOS开发
探索iOS开发中的Swift语言之美
在数字时代的浪潮中,移动应用已成为日常生活的延伸。本文将深入探讨iOS平台上的Swift编程语言,揭示其背后的设计哲学、语法特性以及如何利用Swift进行高效开发。我们将通过实际代码示例,展示Swift语言的强大功能和优雅简洁的编程风格,引导读者理解并运用Swift解决实际问题。
|
26天前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
65 7
|
iOS开发
iOS UITableView(列表)
UITableView UITableView内置了两种样式:UITableViewStylePlain,UITableViewStyleGrouped 里的方法: tableView处理步骤 #pragma mark 1.
1419 0
|
iOS开发
iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一)
iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(一) 一、项目结构和plist文件   二、实现代码 1.说明: 主控制器直接继承UITableViewController // YYViewController.
1063 0

相关实验场景

更多