gpt4 book ai didi

ios - Swift:TitleForHeaderInSection 执行时出现问题

转载 作者:行者123 更新时间:2023-11-30 12:53:31 26 4
gpt4 key购买 nike

就调用命名我的 header 而言,我似乎无法做到正确。

如果您想知道我的模型是关于什么的 - 它基本上是一本包含美丽地点的字典,按字母顺序书写。

有人可以帮助我吗,因为我真的无法弄清楚我做错了什么?

import UIKit

class PlacesTableViewController: UITableViewController {

// MARK: - Table view data source

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0: return (model.places["A"]!.count)
case 1: return (model.places["B"]!.count)
case 2: return (model.places["C"]!.count)
case 3: return (model.places["F"]!.count)
case 4: return (model.places["G"]!.count)
case 5: return (model.places["H"]!.count)
case 6: return (model.places["M"]!.count)
case 7: return (model.places["N"]!.count)
case 8: return (model.places["P"]!.count)
case 9: return (model.places["R"]!.count)
case 10: return (model.places["S"]!.count)
case 11: return (model.places["T"]!.count)
case 12: return (model.places["V"]!.count)
case 13: return (model.places["Y"]!.count)
case 14 : return (model.places["Z"]!.count)
default: return 1
}
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PlacesCell", for: indexPath)

switch indexPath.section {
case 0: cell.textLabel?.text = model.places["A"]?[indexPath.row]
case 1: cell.textLabel?.text = model.places["B"]?[indexPath.row]
case 2: cell.textLabel?.text = model.places["C"]?[indexPath.row]
case 3: cell.textLabel?.text = model.places["F"]?[indexPath.row]
case 4: cell.textLabel?.text = model.places["G"]?[indexPath.row]
case 5: cell.textLabel?.text = model.places["H"]?[indexPath.row]
case 6: cell.textLabel?.text = model.places["M"]?[indexPath.row]
case 7: cell.textLabel?.text = model.places["N"]?[indexPath.row]
case 8: cell.textLabel?.text = model.places["P"]?[indexPath.row]
case 9: cell.textLabel?.text = model.places["R"]?[indexPath.row]
case 10: cell.textLabel?.text = model.places["S"]?[indexPath.row]
case 11: cell.textLabel?.text = model.places["T"]?[indexPath.row]
case 12: cell.textLabel?.text = model.places["V"]?[indexPath.row]
case 13: cell.textLabel?.text = model.places["Y"]?[indexPath.row]
case 14: cell.textLabel?.text = model.places["Z"]?[indexPath.row]
default: break
}
return cell
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let cell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell")
switch section {
case 0: cell?.textLabel?.text = "A"
case 1: cell?.textLabel?.text = "B"
case 2: cell?.textLabel?.text = "C"
case 3: cell?.textLabel?.text = "F"
case 4: cell?.textLabel?.text = "G"
case 5: cell?.textLabel?.text = "H"
case 6: cell?.textLabel?.text = "M"
case 7: cell?.textLabel?.text = "N"
case 9: cell?.textLabel?.text = "P"
case 10: cell?.textLabel?.text = "R"
case 11: cell?.textLabel?.text = "S"
case 12: cell?.textLabel?.text = "T"
case 13: cell?.textLabel?.text = "Y"
case 14: cell?.textLabel?.text = "Z"
default: break
}

return String(describing: cell)
}
}

最佳答案

你快要杀了我了。 ;)

import UIKit

class PlacesTableViewController: UITableViewController {

let letters = ["A", "B", "C", "F", "G", "H", "M", "N", "P", "R", "S", "T", "V", "Y", "Z"]

// MARK: - Table view data source

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let letter = letters[section]
return model.places[letter]?.count ?? 1
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PlacesCell", for: indexPath)
let letter = letters[indexPath.section]
cell.textLabel?.text = model.places[letter]?[indexPath.row]
return cell
}

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
let letter = letters[section]
return letter
}
}

编辑:

看看UITableViewDelegate欲了解更多信息。

要编辑实际的标题 View ,您需要使用 viewForHeaderInSection具体来说。

关于ios - Swift:TitleForHeaderInSection 执行时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40684463/

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