IOS UITableView索引排序功能
UITbableView分组展示信息时,有时在右侧会带索引,右侧的索引一般为分组的首字母,比如城市列表的展示。当点击右侧索引的字母,列表会快速跳到索引对应的分组,方便我们快速查找。下面,就介绍一下索引的最简单地设置。

设置表格索引的步骤:
1、添加表格,设置代理和数据源
2、得到要显示的数据的数组
3、得到右侧显示索引的数组,索引数组中元素的个数要与显示的分组数量对应
4、实现tableview中必须实现的几个方法
5、实现sectionIndexTitlesForTableView:方法,在这个方法中返回索引数组
6、实现titleForHeaderInSection:方法,设置组标题,一般右侧索引与组标题内容是一致的
代码:
// ViewController.m
// TableView索引
//
// Created by jerehedu on 15/6/11.
// Copyright (c) 2015年 jerehedu. All rights reserved.
// #import "ViewController.h" @interface ViewController ()<UITableViewDataSource, UITableViewDelegate>
{
UITableView *_tableView; NSArray *_citysAry; //要显示的城市数组 NSMutableArray *_indexArray; //索引数组
} @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; _citysAry = @[
@[@"北京",@"上海",@"广州",@"烟台"],
@[@"阿坝",@"阿克苏",@"安康",@"安阳",@"澳门"],
@[@"北京",@"白城",@"白山",@"包头",@"宝鸡",@"保定",@"滨州"],
@[@"重庆",@"成都",@"长沙",@"长春",@"沧州",@"赤峰"],
@[@"大连",@"东莞",@"达州",@"大理",@"大同",@"大兴安岭",@"丹东",@"东营"],
@[@"鄂尔多斯",@"鄂州",@"恩施"],
@[@"佛山",@"福州",@"抚顺",@"阜新",@"阜阳"],
@[@"广州",@"贵阳",@"桂林",@"甘南",@"格尔木",@"广安",@"广元"],
@[@"杭州",@"海口",@"哈尔滨",@"合肥",@"哈密",@"海北",@"海东",@"海西",@"海南",@"邯郸",@"菏泽",@"鹤岗",@"黄山"],
@[@"济南",@"锦州",@"吉林",@"济宁",@"嘉兴",@"嘉峪关",@"金华",@"荆门",@"荆州",@"酒泉",@"景德镇"],
@[@"昆明",@"喀什",@"开封",@"克拉玛依"],
@[@"洛阳",@"拉萨",@"兰州",@"莱芜",@"廊坊",@"乐山",@"丽江",@"连云港",@"辽阳",@"临汾",@"临沂",@"六盘水"],
@[@"茂名",@"马鞍山",@"牡丹江"],
@[@"南京",@"宁波",@"南昌",@"南宁",@"南通",@"宁德"],
@[@"攀枝花",@"盘锦",@"平顶山",@"普洱"],
@[@"青岛",@"齐齐哈尔",@"黔南",@"秦皇岛",@"庆阳",@"琼海",@"泉州"],
@[@"日喀什",@"日照"],
@[@"上海",@"深圳",@"沈阳",@"石家庄",@"苏州",@"三门峡",@"三亚",@"汕头",@"绍兴",@"十堰",@"石河子",@"松原"],
@[@"天津",@"唐山",@"台湾",@"太原",@"泰州",@"泰安",@"通辽",@"吐鲁番"],
@[@"武汉",@"无锡",@"潍坊",@"乌鲁木齐",@"威海",@"五指山"],
@[@"西安",@"厦门",@"徐州",@"西沙",@"仙桃",@"咸阳",@"孝感"],
@[@"银川",@"雅安",@"烟台",@"延安",@"盐城",@"扬州",@"阳江",@"宜宾",@"宜昌",@"玉树"],
@[@"郑州",@"珠海",@"淄博",@"漳州",@"张家口",@"驻马店",@"遵义"],
]; //添加tableview
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(, , self.view.frame.size.width, self.view.frame.size.height-) style:UITableViewStylePlain];
_tableView.dataSource = self;
_tableView.delegate = self;
[self.view addSubview:_tableView]; //索引数组
_indexArray = [NSMutableArray arrayWithObjects:@"#",nil];
for (char ch='A'; ch<='Z'; ch++) {
if (ch=='I' || ch=='O' || ch=='U' || ch=='V')
continue;
[_indexArray addObject:[NSString stringWithFormat:@"%c",ch]];
}
} #pragma mark tableview 每组行数
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [[_citysAry objectAtIndex:section] count];
} #pragma mark 组数
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return _indexArray.count;
} #pragma mark 设置每行内容
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *idStr = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:idStr];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:idStr];
} cell.textLabel.text = _citysAry[indexPath.section][indexPath.row]; return cell;
} #pragma mark 设置组标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [_indexArray objectAtIndex:section];
} #pragma mark 右侧索引
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return _indexArray;
} @end
表格索引的高级设置
上面举得是最简单的小例子,已经将要显示的数据进行了排序,实际上真正在开发的过程中,不需要手动排序,可以使用第三方的方法,将所有的城市转为拼音,按照首字母进行分组排序,然后索引也根据拼音首字母自动获得。
疑问咨询或技术交流,请加入官方QQ群:
(452379712)
出处:http://www.cnblogs.com/jerehedu/
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
IOS UITableView索引排序功能的更多相关文章
- IOS UITableView拖动排序功能
UITbableView作为列表展示信息,除了展示的功能,有时还会用到删除,排序等功能,下面就来讲解一下如何实现排序. 排序是当表格进入编辑状态后,在单元格的右侧会出现一个按钮,点击按钮,就可以拖动单 ...
- iOS - UITableView 多选功能实现
:自定义Cell中的代码 #import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property(nonatomic ...
- 简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗
UITableView索引功能是常见的,主要是获取中英文的首字母并排序,系统自带获取首字母 //系统获取首字母 - (NSString *) pinyinFirstLetter:(NSString*) ...
- 简单实现UITableView索引功能(中英文首字母索引) (二) By HL
简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗 相关类: NSString+PinYing(获取中英文首字母) 参考上面链接 #import "ViewCon ...
- IOS UITableView NSIndexPath属性讲解
IOS UITableView NSIndexPath属性讲解 查看UITableView的帮助文档我们会注意到UITableView有两个Delegate分别为:dataSource和deleg ...
- nls_sort和nlssort 排序功能介绍
nls_sort和nlssort 排序功能介绍 博客分类: oracle ALTER SESSION SET NLS_SORT=''; 排序影响整个会话 Oracle9i之前,中文是按照二进制编码 ...
- iOS UITableView划动删除的实现
标签:划动删除 iphone 滑动删除 ios UITableView 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rainb ...
- Android 使用ListView的A-Z字母排序功能实现联系人模块
在上一篇文章其中,主要学习了ListView的A-Z字母排序功能以及依据输入框的输入值改变来过滤搜索结果,假设输入框里面的值为空.更新为原来的列表,否则为过滤数据列表,包含汉字转成拼音的功能.假设你还 ...
- iOS之开发支付功能概述
前言:本随笔将对IOS开发的支付功能进行一个概述. 内容大纲: 一.常见的支付方案简介 二.第三方支付SDK 三.苹果官方支付方案 四.Web支付方案 正文: 一.常见的支付方案简介 在微信支付中 微 ...
随机推荐
- Bzoj5294/洛谷P4428 [Bjoi2018]二进制(线段树)
题面 Bzoj 洛谷 题解 考虑一个什么样的区间满足重组之后可以变成\(3\)的倍数.不妨设\(tot\)为一个区间内\(1\)的个数.如果\(tot\)是个偶数,则这个区间一定是\(3\)的倍数,接 ...
- [leetcode sort]179. Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- 关于socket知识整理
一个完整的计算机系统是由硬件.操作系统.应用软件三者组成,具备了这三个条件,一台计算机系统就可以玩单机游戏.如果你想上网(访问个黄色网站,发个黄色微博啥的),就需要遵守网络协议,即计算机之间交流的标准 ...
- Spring Boot 基础配置
之前简单接触了一些Spring Boot ,并且写了一个简单的 Demo .本文就来简单学习一下 Spring Boot 的基础配置. 一.Spring Boot 项目入口 上文中有写到,Spring ...
- 在Windows上安装FFmpeg程序
原文地址:http://helloway.blog.51cto.com/7666282/1642247 FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它提供了录 ...
- [BZOJ4557][JLOI2016]侦察守卫(树形DP)
首先可以确定是树形DP,但这里存在跨子树的信息传递问题,这里就需要“借”的思想. f[i][j]表示i子树内所有点都被覆盖到,且i以外j层内的点都能被覆盖到 的方案数. g[i][j]表示i子树内离i ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 lct 动态树 splay
http://www.lydsy.com/JudgeOnline/problem.php?id=2002 http://blog.csdn.net/frods/article/details/5224 ...
- CF1060C Maximum Subrectangle【乘法分配律】【最大子矩阵】
CF1060C Maximum Subrectangle 题意翻译 现在给出一个长度为N的a数列,一个长度为M的b数列. 现在需要构造出一个矩阵c,其中ci,j=ai×bj.再给出一个x,请在矩 ...
- Uva 12889 One-Two-Three
Your little brother has just learnt to write one, two and three, in English. He has written a lot ...
- HDU 4730 We Love MOE Girls (2013成都网络赛,签到水题)
We Love MOE Girls Time Limit: 1000/500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...