Like the Address Book in iOS, by clicking the alphabetical index to the right of the Contact table, we can quickly navigate to the group of contacts that are headed with that letter.to implement the index, we only need two steps:(1) Implementing an index data source proxy method (2) responding to an agent event triggered by a hit index
as follows:
The code is as follows:
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778798081828384858687 |
import UIKitclass 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 = 0 //遍历索引值 for character in adHeaders{ //判断索引值和组名称相等,返回组坐标 if character == title{ return tpIndex } tpIndex++ } return 0 } //设置分区数 func numberOfSectionsInTableView(tableView: UITableView!) -> Int { return adHeaders.count; } //返回表格行数 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 5 } // 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() }} |
Swift-Add Indexing function to table UITableView (fast positioning)