gpt4 book ai didi

swift - UITableVC 未显示节标题内容

转载 作者:行者123 更新时间:2023-11-28 15:46:23 25 4
gpt4 key购买 nike

仅将我的代码转换为 swift,因此不使用 Storyboard。重写代码后(无 Storyboard使用)标题信息未显示!

如果我更改 viewForHeaderInSection 的返回值:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerId") as! ListsVCHeader
cell.fillHeader(header: listTitles[section])

return cell.contentView
}

到:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerId") as! ListsVCHeader
cell.fillHeader(header: listTitles[section])

return cell // ==> removed .contectView
}

标题内容已显示,但部分标题向左移动,执行我用来启动行删除的滑动手势。有什么建议么?在下面找到相关代码。

class ListsVC: UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

tableView.register(ListsVCHeader.self, forCellReuseIdentifier: "headerId")
// register other Cells
}

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

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

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

let cell = tableView.dequeueReusableCell(withIdentifier: "headerId") as! ListsVCHeader
cell.fillHeader(header: listTitles[section])
return cell.contentView
}

override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return HeaderSectionHeight
}

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {

switch editingStyle {
case .delete:
// mycode
default:
break
}
}
}

节标题单元格

class ListsVCHeader: UITableViewCell {

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {

super.init(style: style, reuseIdentifier: reuseIdentifier)
// add subviews and constraints
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

func fillHeader (header: String) {
name.text = header
}
}

最佳答案

viewDidLoad 中的 register 更改为:

tableView.register(ListsVCHeader.self, forHeaderFooterViewReuseIdentifier: "headerId") 

您的类 ListsVCHeader 应更改为:

class ListsVCHeader: UITableViewHeaderFooterView

最后修改以下代码:

let cell = tableView.dequeueReusableCell(withIdentifier: "headerId") as! ListsVCHeader

let cell = tableView.dequeueReusableHeaderFooterView(withIdentifier: "headerId) as! ListsVCHeader

关于swift - UITableVC 未显示节标题内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981668/

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