获取对Xib文件的引用

时间:2016-08-08 06:41:47

标签: ios swift uitableview

我有一个带有自定义表格部分标题的tableView,通过以下方法从我的tableSectionHeader.xib文件加载

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

    let nib = UINib(nibName: "TableSectionHeader", bundle: nil)
    discoverTableView.registerNib(nib, forHeaderFooterViewReuseIdentifier: "TableSectionHeader")

   let cell = tableView.dequeueReusableHeaderFooterViewWithIdentifier("TableSectionHeader") as? TableSectionHeader {
    return cell
}

我希望有一个基于内容的变量表部分标题,所以我需要获取对我的xib文件的引用(分配给tableSectionHeader.swift,我的IBOutlets,如postImage,postDescription被声明)。

例如,我想做这样的事情......

    func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    // get a reference to xib,
    return xibref.postImage.frame.height + xibref.postDescriptionLabel.frame.height

}

谢谢,

请注意。我不想实现estimatedRowHeight,因为apprent“bug”会导致tableView跳转,如本文所述。我这样做了,除了手动实现高度之外,还没有能够解决这个问题 UITableView with dynamic cell heights jumping when scrolling up after reloading cell

1 个答案:

答案 0 :(得分:0)

您应该在viewDidLoad中注册NIB,同时可以实例化NIB并将视图实例存储在实例变量xibref中。然后,您可以简化viewForHeaderInSectionheightForHeaderInSection中的现有代码可能会有效。

请注意,在heightForHeaderInSection中,您可能需要将图像/文本实际设置到视图实例中并要求它进行布局,以便从中获取正确的高度。