如何在iPhone的“通讯录”应用中获取自定义栏目索引标题

时间:2018-11-14 06:42:59

标签: ios swift

我只想创建带有索引部分的自定义concat列表(索引列表必须与默认联系人列表相同)。 例如,如果我创建任何不带名称的联系人,则带有#索引,如果任何联系人以数字开头,则它也带有#index。我正在使用以下代码,但没有运气。

CStr

2 个答案:

答案 0 :(得分:0)

解决方案, 我点击了此链接-:https://developer.apple.com/documentation/uikit/uilocalizedindexedcollation

class ObjectTableViewController: UITableViewController {
let collation = UILocalizedIndexedCollation.currentCollation()
var sections: [[AnyObject]] = []
var objects: [AnyObject] = [] {
    didSet {
        let selector: Selector = "localizedTitle"
        sections = Array(count: collation.sectionTitles.count, repeatedValue: [])

        let sortedObjects = collation.sortedArrayFromArray(objects, collationStringSelector: selector)
        for object in sortedObjects {
            let sectionNumber = collation.sectionForObject(object, collationStringSelector: selector)
            sections[sectionNumber].append(object)
        }

        self.tableView.reloadData()
    }
}

// MARK: UITableViewDelegate

override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String {
    return collation.sectionTitles[section]
}

override func sectionIndexTitlesForTableView(tableView: UITableView) -> [String] {
    return collation.sectionIndexTitles
}

override func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int {
    return collation.sectionForSectionIndexTitleAtIndex(index)
}

}

答案 1 :(得分:0)

Swift 5

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
    return UILocalizedIndexedCollation.current().sectionTitles[section]
}

func sectionIndexTitles(for tableView: UITableView) -> [String]? {
   
    return  UILocalizedIndexedCollation.current().sectionTitles
}

func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
    return UILocalizedIndexedCollation.current().section(forSectionIndexTitle: index)
}