我有一个带有以下(静态)tableView的viewController:
class viewController: UIViewController, UITableViewDelegate {
private let tableView: UITableView = {
let tv = UITableView()
tv.separatorStyle = .singleLine
tv.allowsSelection = true
tv.isScrollEnabled = false
return tv
}()
private let tableData = ["row1", "row2", "row3", "row4"]
override func viewDidLoad() {
super.viewDidLoad()
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.delegate = self
tableView.tableFooterView = UIView()
view.addSubview(tableView)
NSLayoutConstraints.activate([
tableView.centerXAnchor.constraints(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
tableView.centerYAnchor.constraints(equalTo: view.safeAreaLayoutGuide.centerYAnchor)
)]
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
cell.textLabel!.text = tableData[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableData.count
}
}
当我运行应用程序时,此viewController会显示一个空白屏幕。我知道设置表格视图约束的方式就是问题所在,因为当我使用topAnchor
,bottomAnchor
,leftAnchor
和rightAnchor
(以及进行其他一些调整)。知道为什么应用程序会以这种方式运行吗?
答案 0 :(得分:1)
您的表格视图可能在那里并且居中,但是您没有定义尺寸,因此它的宽度和高度可能设置为零,这就是为什么您看不到它的原因。
您可以通过对其宽度和高度设置约束来解决此问题,该约束可以是常量,也可以与其父视图相关,具体取决于您想要的内容。
答案 1 :(得分:0)
问题是这不是静态表视图。如果是这样,您将不会实现cellForRowAt
。这是一个普通的表视图,它需要一个数据源和委托。加上它需要一个高度和一个宽度。