UITableView的UITableViewStyleGrouped

以下图例就是分组UITableViewStyleGrouped的样式

本人提供快速集成的方法,不弄脏你那双手:)

源码:

TableViewData.h

//
// TableVewData.h
// Sections
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import <Foundation/Foundation.h> @interface TableViewData : NSObject // 添加数据源 + 数据源标签
- (void)addDataArray:(NSArray *)array arrayFlag:(NSString *)flag; // 对应区域中的row的个数
- (NSInteger)numberOfRowsInSection:(NSInteger)section; // 有几个section
- (NSInteger)numberOfSections; // 对应于Section上的flag值标签
- (NSString *)flagInSection:(NSInteger)section; // 对应于indexPath中的数据
- (id)dataInIndexPath:(NSIndexPath *)indexPath; @end

TableViewData.m

//
// TableVewData.m
// Sections
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import "TableViewData.h" @interface TableViewData () @property (nonatomic, strong) NSMutableArray *dataArray;
@property (nonatomic, strong) NSMutableArray *nameList; @end @implementation TableViewData - (instancetype)init
{
self = [super init];
if (self)
{
_dataArray = [NSMutableArray new];
_nameList = [NSMutableArray new];
}
return self;
} - (void)addDataArray:(NSArray *)array arrayFlag:(NSString *)flag
{
[_dataArray addObject:array];
[_nameList addObject:flag];
} - (NSInteger)numberOfRowsInSection:(NSInteger)section
{
return [_dataArray[section] count];
} - (NSInteger)numberOfSections
{
return [_dataArray count];
} - (NSString *)flagInSection:(NSInteger)section
{
return _nameList[section];
} - (id)dataInIndexPath:(NSIndexPath *)indexPath
{
return _dataArray[indexPath.section][indexPath.row];
} @end

使用情况:

//
// RootViewController.m
// UITableViewGroup
//
// Copyright (c) 2014年 Y.X. All rights reserved.
// #import "RootViewController.h"
#import "TableViewData.h" static NSString *reusedFlag = @"reusedFlag"; @interface RootViewController ()<UITableViewDataSource, UITableViewDelegate> @property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, strong) TableViewData *tableViewData; @end @implementation RootViewController - (void)viewDidLoad
{
[super viewDidLoad]; // 初始化tableView(分组形势的tableView)
_tableView = [[UITableView alloc] initWithFrame:self.view.bounds
style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
[self.view addSubview:_tableView]; // tableView数据
_tableViewData = [TableViewData new];
[_tableViewData addDataArray:@[@"", @"", @""] arrayFlag:@"设置"]; // section1
[_tableViewData addDataArray:@[@"一", @"二", @"三"] arrayFlag:@"配置"]; // section2
[_tableViewData addDataArray:@[@"one", @"two", @"three"] arrayFlag:@"闲置"]; // section3
} // 每个区多少个cell
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [_tableViewData numberOfRowsInSection:section];
} // 创建cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reusedFlag];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:reusedFlag];
} // section1
if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"设置"])
{
NSString *str = [_tableViewData dataInIndexPath:indexPath];
cell.textLabel.text = str;
cell.textLabel.textColor = [UIColor redColor];
} // section2
if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"配置"])
{
NSString *str = [_tableViewData dataInIndexPath:indexPath];
cell.textLabel.text = str;
cell.textLabel.textColor = [UIColor blueColor];
} // section3
if ([[_tableViewData flagInSection:indexPath.section] isEqualToString:@"闲置"])
{
NSString *str = [_tableViewData dataInIndexPath:indexPath];
cell.textLabel.text = str;
cell.textLabel.textColor = [UIColor magentaColor];
} return cell;
} // 多少个区
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [_tableViewData numberOfSections];
} // 每个区的标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [_tableViewData flagInSection:section];
} @end

几个需要注意的地方:

以下两个方法是DataSource中的,直接与分组有关.

不同的section配置不同的标题.

看起来应该很直白:)

 

UITableView的UITableViewStyleGrouped的更多相关文章

  1. UItableView与UICollectionView

    UITableView 1. UITableViewStyleGrouped 分区表格样式创建表格 .separatorStyle = UITableViewCellSeparatorStyleSin ...

  2. iOS UITableView 与 UITableViewController

    很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...

  3. 使用UITableView的分组样式

    分组样式顾名思义是对TableView中的数据行进行分组处理,每个分组都有一个header和footer. TableView中header的英文文本是大写的,footer的英文文本是小写的.如下图浅 ...

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

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

  5. UI第十八节——UITableView

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,基本大部分应用都有UITableView.当然它的广泛使用自然离不开它强大的功能,今天就针对U ...

  6. iOS开发系列--UITableView全面解析

    --UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是U ...

  7. UITableView UITableViewCell

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. (转) 如何让 UITableView 的 headerView跟随 cell一起滚动

    在我们利用 UITableView 展示我们的内容的时候,我需要在顶部放一个不同于一般的cell的 界面,这个界面比较独特. 1. 所以我就把它 作为一个section的 headerView. 也就 ...

  9. UItableVIew初探

    UItableView style/* //普通  UITableViewStylePlain,   //分组  UITableViewStyleGrouped*/ //表格视图    UITable ...

随机推荐

  1. Ibatis框架之系统架构

    如果用最简洁的话来总结 iBATIS 主要完成那些功能时,我想下面几个代码足够概括. Class.forName("oracle.jdbc.driver.OracleDriver" ...

  2. memcached 学习笔记 2

    原理 1 核心组件 Memcached有两个核心组件组成:服务端(ms)和客户端(mc). 首先mc拿到ms列表,并对key做hash转化,根据hash值确定kv对所存的ms位置. 然后在一个memc ...

  3. Angular2-三种样式封装策略的区别

    Angular2有三种样式封装方式,分别是None.Native.Emulated. 可用元数据“encapsulation”配置,配置方式如下: encapsulation: ViewEncapsu ...

  4. OpenFileDialog 打开文件对话框

    InitialDirectory 对话框的初始目录 Filter 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*" Filt ...

  5. java 基础 --- volatile

    问题  : volatile 解决的是什么问题 有什么应用场景 概述 某些共享变量的时候我们使用volatile 修饰,它会保证修改的值立即被更新到主存,或是从主存中获取最新的值.它的底层是如何实现的 ...

  6. spring boot2.0

    1. Spring boot 简介 1.1 spring boot的三大特性 组件自动装配:Web mvc, Web Flux,JDBC等 激活:@EnableAutoConfiguration 配置 ...

  7. java类加载机制及方法调用

    类加载机制 概述 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resoluti ...

  8. C#获取AD域中计算机和用户的信息

    如果你的计算机加入了某个AD域,则可以获取该域中所有的计算机和用户的信息. 所用程序集,需要.Net Framework 4. 添加程序集引用 System.DirectoryServices.Acc ...

  9. Apache shiro的简单介绍与使用(与spring整合使用,并加入ehcache缓存权限数据)

    apache shiro框架简介 Apache Shiro是一个强大而灵活的开源安全框架,它能够干净利落地处理身份认证,授权,企业会话管理和加密.现在,使用Apache Shiro的人越来越多,因为它 ...

  10. MySQL数据库的备份与恢复命令

    1.数据库导出SQL脚本 启动MySQL服务器 输入:mysqldump -u root -p  数据库名>生成脚本文件路径 输入登录密码,回车键 例如: $ mysql.server star ...