iOS开发——UI_swift篇&UITableView实现索引功能
2024-10-18 20:22:04
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() } }
最新文章
- 10月24日上午PHP面向对象
- beagleBone black 中QT的移植
- archive成功了,但是在输出ipa时要求有账号密码
- POJ1155TELE[树形背包]
- [GO编程] GO入门语法基础
- Ecshop 最小起订量如何设置
- mysql5.7.1.3 安装说明 和出现的问题
- python——面向对象基础
- java自然语言理解demo,源码分享(基于欧拉蜜)
- Mat, IplImage, CvMat, Cvarr关系及元素获取
- Maven学习 三 Maven与Eclipse结合使用
- python基础学习第六天
- CentOS yum 安装获取原始rpm文件的方法
- Faster rcnn代码理解(4)
- 书记查询的App设计
- iOS UI基础-10.0 QQ聊天布局之键盘及文本使用
- python实用库:PrettyTable 学习
- Codeforces Beta Round #14 (Div. 2) B. Young Photographer 水题
- ZOJ 3203 Light Bulb (三分查找)
- 05-基础widgets