Table Xib 文件中的视图无法正确加载自定义 table 视图单元格
Table View in Xib file doesn't load custom table view cell properly
我有一个带有 table 视图的 Xib(我使用的是 Xib 而不是常规的故事板,因为我将 Xib 插入到 UIPageViewController 中)。在 Xib 的 class 中,我注册了一个自定义 table 视图单元格。尽管单元格插入 table 视图,但它不会根据其约束正确调整大小,也不会更改 table 视图的显示。
这是我的 xib:
这是我的自定义单元格:
这是我在具有 table 视图 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 文件添加到 table 视图,但是即使单元格对所有内容都有限制,它们的大小也不正确?而且,table 视图的其余部分仍然是白色的 table 视图行?我不确定 table 视图是否没有正确响应,因为它在 Xib 中,或者我是否遗漏了我应该添加的内容。
如有任何关于如何正确显示内容的指示或帮助,我们将不胜感激!
默认情况下,tableView 显示 UITableViewCell 的默认高度。如果我们想要自定义高度,可以有两种方式。
1.使用 heightForRow 方法
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
2。使用自动布局
在这种情况下,您的 tableView 单元格必须应用所有必需的约束来完成从上到下的约束阶梯,以便 autoLayout 可以在运行时计算单元格的高度。
对于第二个问题,您可以删除多余的分隔符。通过在 viewDidLoad
中执行以下代码
tableView.tableFooterView = UIView()
你应该用这个;
tableView.separatorStyle = .none
对于空的 tableView 视图。
我有一个带有 table 视图的 Xib(我使用的是 Xib 而不是常规的故事板,因为我将 Xib 插入到 UIPageViewController 中)。在 Xib 的 class 中,我注册了一个自定义 table 视图单元格。尽管单元格插入 table 视图,但它不会根据其约束正确调整大小,也不会更改 table 视图的显示。
这是我的 xib:
这是我的自定义单元格:
这是我在具有 table 视图 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 文件添加到 table 视图,但是即使单元格对所有内容都有限制,它们的大小也不正确?而且,table 视图的其余部分仍然是白色的 table 视图行?我不确定 table 视图是否没有正确响应,因为它在 Xib 中,或者我是否遗漏了我应该添加的内容。
如有任何关于如何正确显示内容的指示或帮助,我们将不胜感激!
默认情况下,tableView 显示 UITableViewCell 的默认高度。如果我们想要自定义高度,可以有两种方式。
1.使用 heightForRow 方法
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 200
}
2。使用自动布局
在这种情况下,您的 tableView 单元格必须应用所有必需的约束来完成从上到下的约束阶梯,以便 autoLayout 可以在运行时计算单元格的高度。
对于第二个问题,您可以删除多余的分隔符。通过在 viewDidLoad
中执行以下代码tableView.tableFooterView = UIView()
你应该用这个;
tableView.separatorStyle = .none
对于空的 tableView 视图。