UITableView实现索引功能

 
 
关于UItableView的索引在平时项目中所见不多,最多的就是跟联系人有关的界面,虽然如此,但是作为一个swift开发的程序必须知道的一个技术点,所以今天我吗就来讨论一下周末去实现它。
 
像iOS中的通讯录,通过点击联系人表格右侧的字母索引,我们可以快速定位到以该字母为首字母的联系人分组。

 
要实现索引,我们只需要两步操作:
  • (1)实现索引数据源代理方法
  • (2)响应点击索引触发的代理事件
 
效果图如下:
 
代码如下:
 import UIKit

 class ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{

     var tableView:UITableView?

     var adHeaders:[String] = ["a","b","c","d","e"]

     override func loadView() {
         super.loadView()
     }

     override func viewDidLoad() {
         super.viewDidLoad()

         //创建表视图
         self.tableView = UITableView(frame:UIScreen.mainScreen().applicationFrame,
             style:UITableViewStyle.Grouped)
         self.tableView!.delegate = self
         self.tableView!.dataSource = self
         //创建一个重用的单元格
         self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
         self.view.addSubview(self.tableView!)
     }

     //实现索引数据源代理方法
     func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]! {
         return adHeaders
     }

     //点击索引,移动TableView的组位置
     func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String,
         atIndex index: Int) -> Int {
         var tpIndex:Int =
         //遍历索引值
         for character in adHeaders{
             //判断索引值和组名称相等,返回组坐标
             if character == title{
                 return tpIndex
             }
             tpIndex++
         }

     }

     //设置分区数
     func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
         return adHeaders.count;
     }

     //返回表格行数
     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

     }

     // UITableViewDataSource协议中的方法,该方法的返回值决定指定分区的头部
     func tableView(tableView:UITableView, titleForHeaderInSection
         section:Int)->String
     {
         var headers =  self.adHeaders;
         return headers[section];
     }

     //设置分组尾部高度(不需要尾部,设0.0好像无效)
     func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
         return 0.1
     }

     //创建各单元显示内容(创建参数indexPath指定的单元)
     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
         -> UITableViewCell
     {
         //为了提供表格显示性能,已创建完成的单元需重复使用
         let identify:String = "SwiftCell"
         //同一形式的单元格重复使用,在声明时已注册
         let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath)
             as UITableViewCell
         cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
         var secno = indexPath.section
         cell.textLabel?.text = self.adHeaders[secno]+String(indexPath.item)
         return cell
     }

     override func didReceiveMemoryWarning() {
         super.didReceiveMemoryWarning()
     }
 }

iOS开发——UI_swift篇&UITableView实现索引功能的更多相关文章

  1. iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏

    UITableView实现单元格展开与隐藏  关于UITableView的展开的收缩在前面的文章我已经结束,就是使用代理,通知,block传值的时候实现的,当时是使用一个Bool值来实现,最后使用着三 ...

  2. iOS开发——UI_swift篇&UItableView实现移动单元格

    UItableView实现移动单元格   1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现 ...

  3. iOS开发UI篇—UITableview控件简单介绍

    iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...

  4. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...

  5. iOS开发UI篇—UITableview控件使用小结

    iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...

  6. iOS开发——UI_swift篇&TableView实现页眉和页脚

    TableView实现页眉和页脚   在UItableView中header和footer是很常见的,而且他能让你实现很复杂的功能,我们见过最多的就是下拉刷新和上啦加载更多,当然你还可以在上面添加一个 ...

  7. iOS开发——UI_swift篇&TableView自定义聊天界面

    TableView自定义聊天界面   1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 ...

  8. iOS开发UI篇—无限轮播(功能完善)

    iOS开发UI篇—无限轮播(功能完善) 一.自动滚动 添加并设置一个定时器,每个2.0秒,就跳转到下一条. 获取当前正在展示的位置. [self addNSTimer]; } -(void)addNS ...

  9. iOS开发UI篇—UIScrollView控件实现图片缩放功能

    iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...

随机推荐

  1. POJ 2386 Lake Counting

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 28966   Accepted: 14505 D ...

  2. qt集成到vs2010

    因为要正式开始学习图形处理相关的知识了,所以要搭建开发平台.我所要用到的平台主要是vs和qt.虽然现在已经出了vs2013了,并且外观看起来特别漂亮,但是我所要用到的qt4版本中,没有对于的qtAdd ...

  3. Android和iOS隐藏状态条

    Android: 在 AndroidManifest.xml 里 <activity android:theme="@android:style/Theme.NoTitleBar.Fu ...

  4. ASP.NET性能优化小结(ASP.NET&C#)

    ASP.NET: 一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库 ...

  5. CSS 3的display:盒类型详解

    在CSS中,使用display属性来定义盒的类型.总体来说,盒类型分为两类:inline和block.如div默认是block,span默认是Inline.可以通过display修改默认的表现方式. ...

  6. web服务器分析与设计(三)

    面向对象分析与设计第二步:健壮性分析,完善对象 通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命. 但是光有实体还系统是运转不 ...

  7. 恒天云单节点部署指南--OpenStack H版本虚拟机单节点部署解决方案

    本帖是openstack单节点在虚拟机上部署的实践.想要玩玩和学习openstack的小伙伴都看过来,尤其是那些部署openstack失败的小伙伴.本帖可以让你先领略一下openstack的魅力.本I ...

  8. 十个提升你Emacs生产力的高招

    转载 十个提升你Emacs生产力的高招   Emacs是世界上最好的编辑器(真的有很多人这么认为).不要以为emacs只是在编写程序时很牛X,其实只要你真正精通了emacs,会发现她几乎在所有用到打字 ...

  9. 第二百六十九天 how can I 坚持

    什么是明事理,搞不懂啊,好烦. 有点像我妈. 为什么突然就想买房了呢,为什么?年龄到了,考虑的东西就不一样了. 哎,不要想太多,睡觉.

  10. SOP、DIP、PLCC、TQFP、PQFP、TSOP、BGA封装解释

    1. SOP封装SOP是英文Small Outline Package的缩写,即小外形封装.SOP封装技术由1968-1969年菲利浦公司开发成功,以后逐渐派生出SOJ(J型引脚小外形封装).TSOP ...