2017-04-10 48 views
0

我在我的UITableView中有數百個部分。我已將所有部分放在數組中,並且已將該數組更改爲僅包含大寫字母,並刪除了任何重複字符。索引部分UITableView中的標題在sectionForSectionIndexTitle中使用A-Z方法

//sample array 
let sectionsArray: [String] = [Apple, Asparagus, Banana, Barley, Cucumber...] 

var firstLettersOfSections: [String] = [] 

firstLettersOfSections = sectionsArray.map { String($0.characters.first!).uppercased() } 
     firstLettersOfSections = removeDuplicates(&firstLettersOfSections) 

我在sectionIndexTitles方法返回firstLettersOfSections

override func sectionIndexTitles(for tableView: UITableView) -> [String]? { 
    return firstLettersOfSections 
} 

這段代碼產生的的tableView右側適當的字母數字字符,但是,當字符拍了拍,他們去對應於firstLettersOfSections的索引。

什麼我放在sectionForSectionIndexTitle的tableView方法,這樣,當我在垂直列表中的字母數字字符敲擊時,進行到首節與指定的字母或數字,並且使得索引不區分大小寫?

回答

0

我所要做的就是找到sectionsArray中第一個項目的索引,該項匹配的條件是該項目的第一個大寫字母等於顯示在表格的部分索引中的字母:

override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int { 
    return sectionsArray.index(where: { String($0.characters.first!).uppercased() == title }) 
} 
相關問題