Xib文件中的表视图无法正确加载自定义表视图单元格。

问题描述 投票:0回答:1

我有一个Xib,里面有一个表视图(我使用的是Xib而不是普通的storyboard,因为我把Xib插入到一个UIPageViewController中)。在Xib的类中,我注册了一个自定义的表视图单元格。虽然单元格插入到了表视图中,但它并没有根据它的约束条件正确调整大小,也没有改变表视图的显示。

这是我的xib。enter image description here

这是我的自定义单元格enter image description here

这是我在视图控制器中的设置代码,其中有表格视图Xib:class。

YearbookPageViewController: UIViewController {
    var signatures: [Signature] = []
    var pageNumber: Int = 0

    convenience init(signatures: [Signature], pageNumber: Int) {
        self.init(nibName: "YearbookPageViewController", bundle: nil)
        self.signatures = signatures
        self.pageNumber = pageNumber
    }

    // MARK: Properties
    @IBOutlet var pageTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.pageTableView.delegate = self
        self.pageTableView.dataSource = self

        let nib = UINib(nibName: "SignatureTableViewCell", bundle: nil)
        self.pageTableView.register(nib, forCellReuseIdentifier:  SignatureTableViewCell.identifier)
    }

}

当我运行应用程序时,它是这样的。

enter image description here

基本上,自定义单元格被添加到了xib文件的表格视图中 但它们的大小并不正确,即使单元格对所有东西都有约束?而且,表视图的其他部分还是白色的表视图线?我不确定表视图没有正确响应是因为它在Xib中,还是我遗漏了一些我应该添加的东西。

如果有任何关于如何让事情正确显示的提示或帮助,我将感激不尽。

ios swift uitableview autolayout xib
1个回答
1
投票

默认情况下,tableView显示默认的UITableViewCell高度。如果我们想要自定义高度,可以有两种方法。

1. 使用 heightForRow 方法

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 200
}

2. 使用AutoLayout

在这种情况下,你的tableView单元格必须应用所有所需的约束条件,完成一个从上到下的约束梯形图,这样autoLayout就可以在RunTime计算单元格的高度。

对于第二个问题,你可以通过在viewDidLoad中执行以下代码来删除额外的分隔符。

tableView.tableFooterView = UIView()

1
投票

你应该用这个。

tableView.separatorStyle = .none

用于空的tableView视图。

© www.soinside.com 2019 - 2024. All rights reserved.