iOS swift tableview 获取某个部分的 headerview

amo*_*the 0 uitableview tableview ios nstableheaderview swift

以下是我将标题添加到部分的代码

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let optionsForSection = isMutliLevelOptions() ? options : optionsList?[section]
    let sectionView = MenuOptionHeaderView()
    sectionView.isMultiSelectAllowed = allowsMultipleSelection(section)
    sectionView.selectedOptionsCount = getSelectedCount(section)
    sectionView.option = optionsForSection
    sectionView.setUI()
    //headerView = sectionView
    return sectionView
}
Run Code Online (Sandbox Code Playgroud)

以下是访问节标题的代码

  func updateHeader(section : Int) {
    let headerView : MenuOptionHeaderView = optionsTableView.headerView(forSection: section) as! MenuOptionHeaderView
    headerView.selectedOptionsCount = getSelectedCount(section)
    headerView.setUI()
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码崩溃说线程 1: 致命错误: 展开可选值时意外发现 nil

我还收到来自“UITableViewHeaderFooterView?”的警告 Cast 对于我的代码,不相关的类型“MenuOptionHeaderView”总是失败

我正在使用 .xib 文件创建 MenuOptionHeaderView 并且工作正常我想知道如何获取特定部分的标题

以下是MenuOptionHeaderView的代码

import UIKit

class MenuOptionHeaderView: UIView {

@IBOutlet weak var optionNameLbl: UILabel!


@IBOutlet weak var selectMinLbl: UILabel!



@IBOutlet var contentView: UIView!


var option : Options?
var selectedOptionsCount = 0
var isMultiSelectAllowed = false
override init(frame: CGRect) {
   super.init(frame: frame)
   commonInit()
}

required init?(coder aDecoder: NSCoder) {
   super.init(coder: aDecoder)
   commonInit()
}

func commonInit() {
   Bundle.main.loadNibNamed("MenuOptionHeaderView", owner: self, options: nil)
   contentView.fixInView(self)
}


func setUI() {


    optionNameLbl.text = isMultiSelectAllowed ?  "\(option?.name ?? "")(\(selectedOptionsCount))" :  (option?.name ?? "")


}


}
Run Code Online (Sandbox Code Playgroud)

小智 5

您的视图MenuOptionHeaderView必须继承自UITableViewHeaderFooterView,否则此调用:

optionsTableView.headerView(forSection: section) as! MenuOptionHeaderView
Run Code Online (Sandbox Code Playgroud)

不会工作并且总是返回零。

来源:如何从 UItableView 获取节标题