gpt4 book ai didi

ios - swift 表格 View 中的字母部分

转载 作者:IT王子 更新时间:2023-10-29 05:17:07 27 4
gpt4 key购买 nike

我有一个按字母顺序排序的名字列表,现在我想在表格 View 中显示这些名字。我很难为每个字母对这些名称进行分组。

我的代码是这样的:

let sections:Array<AnyObject> = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
var usernames = [String]()

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{

let cellID = "cell"

let cell: UITableViewCell = self.tv.dequeueReusableCellWithIdentifier(cellID) as UITableViewCell

cell.textLabel?.text = usernames[indexPath.row]

return cell
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

return usernames.count
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int{

return 26
}


func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]!{

return self.sections
}

func tableView(tableView: UITableView,
sectionForSectionIndexTitle title: String,
atIndex index: Int) -> Int{

return index
}

func tableView(tableView: UITableView,
titleForHeaderInSection section: Int) -> String?{

return self.sections[section] as? String
}

一切都很好,除了分组使我的表格 View 最终像这样:

enter image description here

所以我知道你应该可以在数组中使用过滤函数,但我不明白如何实现它。

如有任何关于如何进行的建议,我们将不胜感激。

最佳答案

在 Swift 4 中 Dictionary(grouping:by:)被引入以通过任意谓词将序列分组到字典。

此示例将分组字典映射到自定义结构 Section

struct Section {
let letter : String
let names : [String]
}

...

let usernames = ["John", "Nancy", "James", "Jenna", "Sue", "Eric", "Sam"]

var sections = [Section]()

override func viewDidLoad() {
super.viewDidLoad()

// group the array to ["N": ["Nancy"], "S": ["Sue", "Sam"], "J": ["John", "James", "Jenna"], "E": ["Eric"]]
let groupedDictionary = Dictionary(grouping: usernames, by: {String($0.prefix(1))})
// get the keys and sort them
let keys = groupedDictionary.keys.sorted()
// map the sorted keys to a struct
sections = keys.map{ Section(letter: $0, names: groupedDictionary[$0]!.sorted()) }
self.tableView.reloadData()
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cellID = "cell"
let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath)
let section = sections[indexPath.section]
let username = section.names[indexPath.row]
cell.textLabel?.text = username
return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return sections[section].names.count
}

func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}

func sectionIndexTitles(for tableView: UITableView) -> [String]? {
return sections.map{$0.letter}
}

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

关于ios - swift 表格 View 中的字母部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com