1、在实现UITAbleView数据源协议即UITableViewDataSource内的如下方法中:
//  此方法用于告诉哪个UITableView的每一组的每一行显示什么内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
可以设置单元格的样式Style,当为如下所示
UITableViewCell  *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];单元格的样式为Default时只显示一行文字。当它为别的样式例如:
UITableViewCellStyleSubtitle
UITableViewCellStyleValue1
UITableViewCellStyleValue2
样式时可以显示图片框,和两个文字Label。其中
cell.textLable.text = @“XXX是用来显示单元格图片框右侧最上面的大Label。而大Label下面小的Label则用如下方法进行设置,例如:cell.detailTextLabel.text =……   
cell.imageView.iamge = [UIimage imageNameNamed:@“xxx.png”]; 用来设置ImageView的图片
2、 如何实现分组展示数据:
(1)因为默认是plain不分组,所以要设置UITableView的格式为分组格式。
(2)如何显示组标题
在遵守数据源协议的对象中添加如下方法并进行实现:
-(NSString *)tableView:(UITableView *)tableView  titleForHeaderInSection:(NSInteger) section;
——tableView:此参数是用来根据tag判断当前是哪个UITableView组件的。
——section:第几组。此参数是当前tag的UITableView组件的第几组,根据不同的section 即不同组分别返回不同的组标题。
(3)如何显示组描述
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section;
参数用法与以上相同,根据不同UITableView控件的不同组返回不同的组描述。
注意:在手动添加方法时有以下技巧:
(1)按住command键,进入相应协议寻找要添加的具体方法。

(2)先写出方法的返回类型,再进行实现。

代码验证示例如下:

编辑控制器的.h文件如下:

//
//  ViewController.h
//  UITableView展示分组数据
//
//  Created by apple on 15/8/30.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//#import <UIKit/UIKit.h>@interface ViewController : UIViewController  <UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableView;@end

编辑控制器的.m文件如下:

//
//  ViewController.m
//  UITableView展示分组数据
//
//  Created by apple on 15/8/30.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//#import "ViewController.h"
#define  WIDTH  [UIScreen mainScreen].bounds.size.width
#define  HEIGHT  [UIScreen mainScreen].bounds.size.height
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad
{[super viewDidLoad];self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT) style:UITableViewStyleGrouped]; // 分配一个充满全屏,且为分组格式的UITableView空间self.tableView.dataSource = self;  // 为此UITableView控件设置数据源为当前控制器对象[self.view addSubview:self.tableView];  // 将UITableView控件加到控制器的View中进行显示}//  以下实现数据源协议中的方法// 方法一:告诉分为几个组
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView
{return 3;  // 为UItableView组件分为3个组
}// 方法二:每个组分为多少行
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{if (section == 0) {  //为第一组分配3行return 3;}else if(section == 1)  // 为第二组分配2行{return 2;}else{   // 为第三组分配1行return 1;}
}//  方法三:告诉当前UITableView控件每一组的每一行单元格显示什么内容,返回一个单元格对象
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];if (indexPath.section == 0) {  // 如果当前是第一组if (indexPath.row == 0 ) { //如果为当前组的第一行cell.textLabel.text = @"中国";  // 设置第一行的大标题cell.detailTextLabel.text = @"历史悠久的国家"; // 设置第二行的小标题cell.imageView.image = [UIImage imageNamed:@"7.png"];  // 设置ImageView}else if (indexPath.row == 1){ // 如果为当前组的第二行cell.textLabel.text = @"日本";  //设置上面的大标题cell.detailTextLabel.text = @"非常小的国家"; // 设置下面的小标题cell.imageView.image = [UIImage imageNamed:@"2.png"];}else{ //  如果为当前组的第三行cell.textLabel.text = @"朝鲜";cell.detailTextLabel.text = @"非常小的国家"; // 设置下面的小标题cell.imageView.image = [UIImage imageNamed:@"3.png"];}}else if (indexPath.section == 1){  // 如果当前是第二组if (indexPath.row == 0 ) { //如果为当前组的第一行cell.textLabel.text = @"美国";cell.detailTextLabel.text = @"非常富有的国家"; // 设置下面的小标题cell.imageView.image = [UIImage imageNamed:@"4.png"];}else{  // 如果为当前组的第二行cell.textLabel.text = @"英国";cell.detailTextLabel.text = @"非常有文化的国家"; // 设置下面的小标题cell.imageView.image = [UIImage imageNamed:@"5.png"];}}else{ //如果当前是第三组cell.textLabel.text = @"东非";cell.detailTextLabel.text = @"非常穷的国家"; // 设置下面的小标题cell.imageView.image = [UIImage imageNamed:@"6.png"];}return cell;
}// 方法四:为每一组添加组头(头标题)
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{NSString *title;if (section == 0) { // 如果为当前UITableView组件的第一组title = @"亚洲";}else if (section == 1){// 如果为当前UITableView组件的第二组title = @"欧洲";}else{// 如果为当前UITableView组件的第三组title = @"非洲";}return title;
}// 方法五:为每一组添加组结尾描述
-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{NSString *footer;if (section == 0) { // 如果为当前UITableView组件的第一组footer = @"亚洲是个人口众多的地方";}else if (section == 1){// 如果为当前UITableView组件的第二组footer = @"欧洲是个非常发达的地方";}else{// 如果为当前UITableView组件的第三组footer = @"非洲是个非常缺水的地方";}return footer;
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

运行结果如下:

iphone开发之表格组件UITableView的使用(二)如何分组展示数据并添加组头和组尾描述相关推荐

  1. (9) iphone 开发 AppSettings , 系统setting与应用程序setting间的数据控制

    引言:以手机为例, 当你在用一款软件听音乐时,会发现手机自带的大小声控制键和播放软件自带大小声控制键都可对声音进行大小声控制,而且他们的动作都会保持一致.那就让我们一探究竟吧! 一:设置束(setti ...

  2. 大数据开发基础入门与项目实战(二)Java Web数据可视化之3.Linux概述、安装和结构

    文章目录 前言 1.Linux概述 (1)Linux简介 (2)Linux的应用领域及版本介绍 2.安装Linux (1)VMWare的安装 (2)使用VMWare构建虚拟机器 (3)安装CentOS ...

  3. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引

    因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...

  4. 顶级好用的 5 款 Vue table 表格组件测评与推荐

    本文首发:<顶级好用的 5 款 Vue table 表格组件测评与推荐 - 卡拉云> Vue table 表格组件作为绝大多数项目需要内嵌的组件,可谓十分重要.表格看起来虽简单,实则坑很深 ...

  5. iOS之UITableView组头组尾视图/标题悬停

    最近笔者在公司的iOS开发中,有一个iOS开发同事跑来问了两个问题:1.给UITableView设置了组头和组尾视图,但是一直显示不出来?2.UITableView的section的header和fo ...

  6. vue 大数据 渲染_技术专栏 | DMap——实战Vue百万条数据渲染表格组件开发

    作者:TalkingData 李志刚 本文由TalkingData原创,转载请获取授权. 李志刚:近几个月在开发一个基于Vue的数据可视化分析辅助应用---DMap(谛听),一套为数据分析师和数据科学 ...

  7. DMap(谛听)——实战Vue百万条数据渲染表格组件开发

    近几个月在开发一个基于Vue的数据可视化分析辅助应用---DMap(谛听),一套为数据分析师和数据科学家提供的基于位置大数据分析的工具,旨在提高数据分析效率,降低获取多数据并行分析成本,简化大屏和数据 ...

  8. React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发

    React Table 表格组件使用教程 react-table 安装和使用 React Table 表格排序功能 React Table 表格搜索过滤筛选功能 React Table 表格分页功能 ...

  9. Vue.js学习笔记—sort-table:实战:使用Render函数开发可排序的表格组件

    参考<Vue,js>实战(梁灏编著) sort-table:实战:使用Render函数开发可排序的表格组件 index.html <!DOCTYPE html> <htm ...

最新文章

  1. [20161229]linux下使用oclumon命令(rac)
  2. linux查找日志技巧
  3. 学好python可以做什么兼职-自学Python能干些什么副业
  4. ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
  5. Spring 5 新特性:函数式Web框架
  6. AI视觉在教育场景中的创新应用
  7. CentOS 安装VNC
  8. U-Time巡回完美收官 演讲嘉宾干货分享:数据篇
  9. React Hooks 起手式,实现一个「高颜值实用」的色彩设计工具
  10. 关于AOP的几个问题
  11. 编译原理第二版5.1答案
  12. unity的下载与安装
  13. 完整版第四方Oreo易支付源码+28K易支付源码
  14. Windows实现微信多开
  15. 电脑上有什么录音软件,哪个电脑录音软件好用
  16. 修改Google Chrome主页
  17. 基于互联网的温度采集系统
  18. 以太坊开发中ethers库的使用
  19. python 股票市场分析实战
  20. 建筑施工技术【21】

热门文章

  1. Java数据结构:双向链表的实现
  2. ..\FWLIB\STM32F4xx_StdPeriph_Driver\src\stm32f4xx_fsmc.c(493): error: #20: identifier FSMC_Bank3
  3. css3实现 slideUp/slideDown效果
  4. 毕业一周年,工作一周年,感想理解篇
  5. 解决 Cydia 源显示空白的问题
  6. 从钱钟书的博学到维特根斯坦的思想
  7. Shiro和Spring Security对比
  8. 关于mysql的时间存储类型问题
  9. MySQL中az是什么意思_Mysql这些语句是什么意思?
  10. 计算机科学技术作文200,科技改变生活作文200字(精选7篇)