[英]TableView Not Showing on View Controller
I am trying to display a UITableView and its cells in a UIViewController but I am not seeing the UITableView appear in the UIViewController. I am trying to display a UITableView and its cells in a UIViewController but I am not seeing the UITableView appear in the UIViewController. My AutoLayout constraints have the table set to appear underneath the "My Trips" UILabel.
我的 AutoLayout 约束将表格设置为显示在“我的旅行”UILabel 下方。 I've added the delegate and data source, not sure what I'm missing here.
我已经添加了委托和数据源,不确定我在这里缺少什么。
class TripsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
//components
let viewTitle = UILabel()
let tripsTableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
setup()
style()
layout()
}
}
extension TripsViewController {
func setup(){
tripsTableView.delegate = self
tripsTableView.dataSource = self
}
func style() {
view.backgroundColor = .systemBackground
viewTitle.translatesAutoresizingMaskIntoConstraints = false
viewTitle.text = "My Trips"
viewTitle.font = UIFont.preferredFont(forTextStyle: .title1)
tripsTableView.translatesAutoresizingMaskIntoConstraints = false
}
func layout() {
view.addSubview(viewTitle)
view.addSubview(tripsTableView)
NSLayoutConstraint.activate([
viewTitle.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
viewTitle.topAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.topAnchor, multiplier: 2),
tripsTableView.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
tripsTableView.topAnchor.constraint(equalToSystemSpacingBelow: viewTitle.bottomAnchor, multiplier: 2)
])
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = "This is row \(indexPath.row)"
return cell
}
}
you are super close here.你在这里超级近。 The issue lies with your constraints.
问题在于你的限制。
NSLayoutConstraint.activate([
viewTitle.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
viewTitle.topAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.topAnchor, multiplier: 2),
tripsTableView.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
tripsTableView.topAnchor.constraint(equalToSystemSpacingBelow: viewTitle.bottomAnchor, multiplier: 2),
tripsTableView.rightAnchor.constraint(equalToSystemSpacingAfter: self.view.rightAnchor, multiplier: 1),
tripsTableView.heightAnchor.constraint(equalToConstant: 200)
])
you can see here I added in a right anchor and a height of 200.你可以在这里看到我添加了一个正确的锚点和 200 的高度。
Table View Appears.表视图出现。
Good Luck祝你好运
Add Trailing and Bottom constraints for your table view:为表格视图添加尾随和底部约束:
NSLayoutConstraint.activate([
viewTitle.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
viewTitle.topAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.topAnchor, multiplier: 2),
tripsTableView.leadingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.leadingAnchor, multiplier: 2),
tripsTableView.topAnchor.constraint(equalToSystemSpacingBelow: viewTitle.bottomAnchor, multiplier: 2),
// add these constraints
view.safeAreaLayoutGuide.trailingAnchor.constraint(equalToSystemSpacingAfter: tripsTableView.trailingAnchor, multiplier: 2),
view.safeAreaLayoutGuide.bottomAnchor.constraint(equalToSystemSpacingBelow: tripsTableView.bottomAnchor, multiplier: 2),
])
I needed to change the UIViewController to a UITableViewController since I am using static cells (for now) in my code.我需要将 UIViewController 更改为 UITableViewController 因为我在我的代码中使用 static 单元格(现在)。 I also overrode the
numberOfRowsInSection
and cellForRowAt
functions.我还覆盖了
numberOfRowsInSection
和cellForRowAt
函数。
Changed改变了
class TripsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
to至
class TripsViewController: UITableViewController {
You need to set trailing and bottom(or height) constraints as well.您还需要设置尾随和底部(或高度)约束。 It will set a correct frame of tableview.
它将设置正确的表格视图框架。
Snippet:片段:
tripsTableView.trailingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.trailingAnchor, multiplier: 2), tripsTableView.bottomAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.bottomAnchor, multiplier: 2) tripsTableView.trailingAnchor.constraint(equalToSystemSpacingAfter: view.safeAreaLayoutGuide.trailingAnchor, multiplier: 2), tripsTableView.bottomAnchor.constraint(equalToSystemSpacingBelow: view.safeAreaLayoutGuide.bottomAnchor, multiplier: 2)
Note: Set multiple as per your need注意:根据需要设置多个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.