ios - nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewHeaderFooterView 实例

标签 ios uitableview swift3

在为我的 tableView 创建 customHeader 时,我遇到了一个奇怪的问题。我收到的错误如下:

nib 必须恰好包含一个顶级对象,它必须是一个 UITableViewHeaderFooterView 实例

我浏览了我的代码和 xib 文件以及示例,但我没有发现任何错误或我遗漏的想法?

标题 Xib 是用常规 View 创建的,然后是带有标签的 subview ,类是用以下内容创建的:

自定义表头类:

class CustomTableHeader: UITableViewHeaderFooterView {
    static var CustomTableHeaderIdentifier = "CustomTableHeader"
    @IBOutlet weak var titleLabel: UILabel!

    override awakeFromNib(){
         super.awakeFromNib()
         self.titleLabel.text = "Header"
    }

    override func prepareForReuse() {
        super.prepareForReuse()
    }
}

View Controller 类:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.tableView.register(UINib.init(nibName: CustomTableHeader.CustomTableHeaderIdentifier, bundle: nil), forHeaderFooterViewReuseIdentifier: CustomTableHeader.CustomTableHeaderIdentifier)
    }


    //Other Methods
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
         if let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: CustomTableHeader.CustomTableHeaderIdentifier) as? CustomTableHeader {
            header.titleLabel.text = "Section 1"
            return header
     }
}

最佳答案

我想通了我的问题!以防万一有人遇到这种情况,请确保您的第一个 View 确实是 XIB 文件中的唯一对象。例如在我的上,我试图向标题 View 添加一个手势,这也被认为是一个对象。如果你想添加一个手势,你可以通过编程来实现:

addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(/* FUNCTION */)))

关于ios - nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewHeaderFooterView 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313715/

相关文章:

ios - 方向问题

ios - 如何为自动调整单元格正确设置自动布局约束

swift - 核心数据谓词按今天的日期过滤

ios - 部分中的 tableViewCells 中的图像(swift 3- Xcode 8.3.2)

ios - 无法在 viewDidLoad : 中以编程方式更改 constraint.constant

ios - 录制后更改音频比特率

ios - 如何在 Master-Detail 应用程序中呈现多个 TableView ?

ios - 如何从登录中获取JSON数据?

objective-c - 获取 "Warning may not respond to a"消息 iphone

ios - 包含 UITableView 的 UITableViewCell 的高度(iOS8 和 AutoLayout)