美文网首页
UITableView右侧索引

UITableView右侧索引

作者: 雷霸龙 | 来源:发表于2019-07-17 10:25 被阅读0次

    使用系统自带的索引即可,方法如下:

    // MARK: 右侧索引
    // 索引的个数
        func numberOfSectionsInTableView(tableView: UITableView) -> Int {
            // self.getAllCityKey()这是我自己工程里面获取所有索引数据的方法,可以忽略,使用你自己的方法即可
            return self.getAllCityKey().count
        }
    
    // 返回的索引内容,好像这个方法并没有执行
        func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
            let keys = self.getAllCityKey()
            let keyStr = keys[section]
            let keyStrBig = (keyStr as AnyObject).uppercased
            return keyStrBig
        }
        
    // 返回的索引内容,这个方法应该是真的,因为我的索引内容是a-z的小写字母,所以下面使用了小写转大写的方法
        func sectionIndexTitles(for tableView: UITableView) -> [String]? {
            let keys = self.getAllCityKey()
            var array = [String]()
            for keyStr in keys {
                guard let keyStrBig = (keyStr as AnyObject).uppercased else { return [String]() }
                array.append(keyStrBig)
            }
            return array
        }
        
    // 这个代理方法触发点击和滚动索引栏的作用
        func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
            return index
        }
        
    // 这个代理方法是用来修改索引栏字体大小的方法
        func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
            
            setTableViewIndexFont(UIFont.systemFont(ofSize: 17))
        }
        
    // 修改索引栏字体大小
        func setTableViewIndexFont(_ font:UIFont) {
            for view in tableView?.subviews ?? [UIView()] {
                if view.isKind(of: NSClassFromString("UITableViewIndex")!) {
                    let selector = #selector(setter: CATextLayer.font)
                    if view.responds(to: selector) {
                        view.perform(selector, with: font)
                        view.bounds = CGRect(x: 0, y: 0, width: 30, height: 30)
                    }
                }
            }
        }
    

    如果修改索引栏字体颜色,索引栏背景颜色,索引栏选中之后的背景颜色,可以使用tableView的属性修改

    tableView?.sectionIndexColor = UIColor.orange
    tableView?.sectionIndexBackgroundColor = UIColor.red
    tableView?.sectionIndexTrackingBackgroundColor = UIColor.blue
    

    相关文章

      网友评论

          本文标题:UITableView右侧索引

          本文链接:https://www.haomeiwen.com/subject/gygflctx.html