代码之家  ›  专栏  ›  技术社区  ›  Niv

UITableView自定义节头

  •  0
  • Niv  · 技术社区  · 7 年前

    我想加入我的 UITableView 一些自定义的节标题,我在网上搜索过,看到许多人正在创建 UITableViewCell UITableViewHeaderFooterView

    所以我试着自己做,我创建了一个xib文件和一个 UITableViewHeaderFooterView SelectedProductsSectionHeader .

    以下是我连接插座的方法 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
    }
    

    运行时错误:

    由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:[设置值:forUndefinedKey:]:此类不符合密钥标签的密钥值编码

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

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

    0 回复  |  直到 7 年前
        1
  •  0
  •   M3nd3z    7 年前

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

    推荐文章