UITableView右侧索引

2019-07-17  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读