我有一个Xib,里面有一个表视图(我使用的是Xib而不是普通的storyboard,因为我把Xib插入到一个UIPageViewController中)。在Xib的类中,我注册了一个自定义的表视图单元格。虽然单元格插入到了表视图中,但它并没有根据它的约束条件正确调整大小,也没有改变表视图的显示。
这是我在视图控制器中的设置代码,其中有表格视图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)
}
}
当我运行应用程序时,它是这样的。
基本上,自定义单元格被添加到了xib文件的表格视图中 但它们的大小并不正确,即使单元格对所有东西都有约束?而且,表视图的其他部分还是白色的表视图线?我不确定表视图没有正确响应是因为它在Xib中,还是我遗漏了一些我应该添加的东西。
如果有任何关于如何让事情正确显示的提示或帮助,我将感激不尽。
默认情况下,tableView显示默认的UITableViewCell高度。如果我们想要自定义高度,可以有两种方法。
1. 使用 heightForRow 方法
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
2. 使用AutoLayout
在这种情况下,你的tableView单元格必须应用所有所需的约束条件,完成一个从上到下的约束梯形图,这样autoLayout就可以在RunTime计算单元格的高度。
对于第二个问题,你可以通过在viewDidLoad中执行以下代码来删除额外的分隔符。
tableView.tableFooterView = UIView()
你应该用这个。
tableView.separatorStyle = .none
用于空的tableView视图。