我的UITableView中有数百个部分。我已将所有部分放在一个数组中,并且我已将该数组更改为仅包含大写字母并删除任何重复字符。
//sample array
let sectionsArray: [String] = [Apple, Asparagus, Banana, Barley, Cucumber...]
var firstLettersOfSections: [String] = []
firstLettersOfSections = sectionsArray.map { String($0.characters.first!).uppercased() }
firstLettersOfSections = removeDuplicates(&firstLettersOfSections)
我在firstLettersOfSections
方法中返回了sectionIndexTitles
:
override func sectionIndexTitles(for tableView: UITableView) -> [String]? {
return firstLettersOfSections
}
此代码在tableView的右侧生成正确的字母数字字符,但是,当点击字符时,它们会转到与firstLettersOfSections
索引对应的部分索引。
我在sectionForSectionIndexTitle
tableView方法中放入什么,以便当我点击垂直列表中的字母数字字符时,它会转到具有指定字母或数字的第一部分,并且索引不区分大小写?
答案 0 :(得分:0)
我所要做的就是找到sectionsArray
中第一个项目的索引,该索引与项目的第一个大写字母等于被点击的字母的条件相匹配。表视图:
override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {
return sectionsArray.index(where: { String($0.characters.first!).uppercased() == title })
}