[Swift]TableView添加索引列表

添加索引只需实现两个代理方法

    /// 添加右侧索引
    func sectionIndexTitles(for tableView: UITableView) -> [String]? {
        return sortedKeys
    }
    
    /// 索引值与列表关联点击事件
    func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
        return index
    }

举例:

import Foundation
import SwiftyJSON

struct LocationListModel : BaseModel {
    
    typealias Element = LocationListModel
    var key: String = ""
    var list: [LocationItemModel] = []
    
}
    var sortedKeys: [String] = []
    var listArr: [LocationListModel] = []


extension LocationListVC: UITableViewDelegate, UITableViewDataSource {
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return listArr.count
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listArr[section].list.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: LocationListCell.className, for: indexPath) as! LocationListCell
        cell.selectionStyle = .none
        let list = listArr[indexPath.section].list
        cell.data = list[indexPath.row]
        return cell
    }
    
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view : LocationHeaderView = Bundle.main.loadNibNamed("LocationHeaderView", owner: nil, options: nil)![0] as! LocationHeaderView
        view.titleLab.text = listArr[section].key
        return view
    }
    
    func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 40.0
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    }
    
    /// 添加右侧索引
    func sectionIndexTitles(for tableView: UITableView) -> [String]? {
        return sortedKeys
    }
    
    /// 索引值与列表关联点击事件
    func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
        self.view.endEditing(true)
        return index
    }
    
}

示意图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值