未调用 cellForRowAt indexPath 函数 - Swift tableView

Nat*_*3VT 1 tableview swift

我有一个 tableView 显示在我的故事板和预览中,但是当我在我的设备上运行它时它没有显示。调试时,我意识到问题似乎是它从不运行 cellForRowAt indexPath 函数。为什么这段代码不执行该函数,我希望它输出 2 行。

编辑:numberOfRowsInSection 被调用并为 data.count 返回 2

这是我的 ViewController 代码:

import UIKit

class WRViewController: PopupViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var wrNo: UILabel!
@IBOutlet weak var tableView: UITableView!

struct Contact {

    var name:String
    var type:String
    var phone:String

}
var data:[Contact]=[Contact]()

override func viewDidLoad() {

    super.viewDidLoad()

    data.append(Contact(name:"John Doe",type:"Builder",phone:"1234567890"))
    data.append(Contact(name:"Jane Doe",type:"Contractor",phone:"0987654321"))

    tableView.delegate = self
    tableView.dataSource = self

    tableView.reloadData()

}

override func prepareToOpen() {
    super.prepareToOpen()
}

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath)

    let contactView = data[indexPath.row]
    cell.text = contactView.name
    cell.image = contactView.type
    cell.text = contactView.phone

    return cell
}

}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 7

问题是您没有提供足够的自动布局约束来确定此表视图的高度。因此它没有高度。因此它不需要显示任何单元格。因此,它不要求任何细胞。

故事板和/或视图调试器已经非常清楚地警告您这是一个问题,但您没有注意。嗯,注意!添加高度约束或顶部和底部约束,以便此表视图具有高度。

(请注意,问题可能不仅在于表格视图,还在于它垂直固定到的任何内容。但是您没有提供任何相关信息,因此无法从这里说出来。)