cellForRowAt未调用indexPath函数 - Swift tableView

时间:2017-08-08 19:40:09

标签: swift tableview

我有一个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
}

}

1 个答案:

答案 0 :(得分:4)

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

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

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