gpt4 book ai didi

ios - UITableView 自定义节标题

转载 作者:搜寻专家 更新时间:2023-10-31 23:06:17 26 4
gpt4 key购买 nike

我想向我的 UITableView 添加一些自定义部分标题,我在网上搜索并看到很多人正在创建一个 UITableViewCell 子类并将其注册为标题,这听起来像是一种不好的做法,因为有一个名为 UITableViewHeaderFooterView 的页眉和页脚的特定类。

所以我尝试自己做,我创建了一个 xib 文件和一个 UITableViewHeaderFooterView 子类 - 称为 SelectedProductsSectionHeader

这是我连接 socket 的方式 enter image description here enter image description here enter image description here

这是 UITableViewController 端的相关代码-

override func viewDidLoad() {
super.viewDidLoad()

let selectedProductsSectionHeaderNib = UINib(nibName: "SelectedProductsSectionHeader", bundle: nil)
tableView.register(selectedProductsSectionHeaderNib, forHeaderFooterViewReuseIdentifier: "selectedProductsHeader")
}

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

if section == SectionIndex.selectedProducts{

let selectedProductsHeaderCell = tableView.dequeueReusableHeaderFooterView(withIdentifier: "selectedProductsHeader") // throws error
guard let selectedProductsHeader = selectedProductsHeaderCell as? SelectedProductsSectionHeader else { return nil }

return selectedProductsHeader
}

return nil
}

运行时错误:

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key label.'

所以我尝试了其他方法,而不是将 File's Owner 设置为我的自定义类,我将 View 设置为我的自定义类,并且成功了。

enter image description here enter image description here enter image description here

我的问题是为什么第一种方法不起作用?我应该使用文件所有者吗?如果不是-我应该如何使用它?

最佳答案

这是一个很好的问题。当您在 View 本身上设置类时它不起作用的原因是它没有一个 subview 。每当您想使 Root View 成为子类时,您需要再添加一个容器 View ,因为加载的 nib 需要一个父 View 。

您需要做的就是将类设置为 Root View ,拖入容器 View 并将其约束到父 View 的所有边缘,然后添加您的 subview ,它就会起作用。

关于ios - UITableView 自定义节标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650161/

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