• Swift


    像iOS中的通讯录,通过点击联系人表格右侧的字母索引,我们可以快速定位到以该字母为首字母的联系人分组。
     
    要实现索引,我们只需要两步操作:
    (1)实现索引数据源代理方法
    (2)响应点击索引触发的代理事件

    效果图如下:


    代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    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 = 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()
        }
    }
  • 相关阅读:
    Qt中的 Size Hints 和 Size Policies
    __declspec,__cdecl,__stdcall区别和作用
    深入理解DLL文件
    TCP/IP TIME_WAIT状态原理
    Linux 网络编程 高级套接字
    OpenCV 图像处理学习笔记(一)
    C++运算符重载的规则
    WinSock异步IO模型之Select
    ASSER、VERIFY、TRACE详解
    VC++ 网络编程总结(二)
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/4843320.html
Copyright © 2020-2023  润新知