为什么我的tableView没有被填充?

时间:2017-06-18 21:27:01

标签: ios swift uitableview

我尝试使用代码中的示例数据填充基本tableview。这是我的ViewController:

import UIKit

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var postTableView: UITableView!

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "postcell", for: indexPath)

        cell.textLabel?.text = "title"
        cell.detailTextLabel?.text = "detail"
        return cell
    }
}

这是我的故事板 enter image description here

我确定名称"postcell"是正确的,并且我已将tableView连接到ViewController作为数据源和委托。

当我在iOS模拟器中运行代码时,不会显示任何单元格。这就是我所看到的:

enter image description here

以下是我的堆栈视图的约束 enter image description here

堆栈视图属性

enter image description here enter image description here

我不想使用UITableViewController

如何显示表格单元格?

3 个答案:

答案 0 :(得分:2)

如果“postcell”不是故事板中的原型单元格,则需要在viewDidLoad中注册它:

    postTableView.register(UITableViewCell.self, forCellReuseIdentifier: "postcell")

如果是XIB表视图单元格,您可以按如下方式注册:

    postTableView.register(UINib(nibName: "NibName", bundle: nil), forCellReuseIdentifier: "postcell")

如果您是从故事板中进行操作,请将原型单元格(或表格视图单元格)拖到表格视图上,然后在重用标识符中将其命名为“postcell”,如下所示:

Prototype table view cell

确保您在viewDidLoad中也完成了以下操作:

    postTableView.delegate = self
    postTableView.dataSource = self

当然,您还需要:

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

答案 1 :(得分:1)

tableView中的

(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)

让cell = tableView.dequeueReusableCell(withIdentifier:" postcell",for:indexPath) as postcell //添加此行

答案 2 :(得分:1)

感谢@MrSaturn在评论中指出它是堆栈视图的问题。在故事板中,我不得不将堆栈视图的对齐属性从中心更改为Fill。