TableView完全不会显示数据

时间:2018-08-08 20:44:48

标签: ios swift uitableview

试图创建一个简单的tableView来显示数据,但是它不起作用。我检查了一下,甚至没有进入func tableView ..任何想法可能是什么问题?

import UIKit

class ViewController: UIViewController,UITableViewDelegate , UITableViewDataSource , UITextFieldDelegate {    

    let messageArray = ["First message ", "sec message " , "Third message"]

    @IBOutlet weak var customTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        customTableView.delegate = self
        customTableView.dataSource = self

        customTableView.register(UINib(nibName: "customCell" , bundle: nil), forCellReuseIdentifier: "tableCell")
        configureTableView()

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


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

        cell.label0.text = messageArray[0]

        cell.label1.text = messageArray[1]
        cell.label2.text = messageArray[2]
        cell.label3.text = "d"
        customTableView.reloadData()
        return cell
    }



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

        customTableView.rowHeight = UITableViewAutomaticDimension
        customTableView.estimatedRowHeight = 120.0


    }
}

4 个答案:

答案 0 :(得分:0)

在设置委托和数据源之前注册单元格。

删除func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell中的customTableView.reloadData()

答案 1 :(得分:0)

尝试从cellForRowAt删除reload data并实施

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

答案 2 :(得分:0)

我认为您有一个递归重载,因为您在cellForRowAt中有此重载

customTableView.reloadData()

所以评论它并尝试

答案 3 :(得分:0)

只需从数据源方法cellForRowAt中删除以下行:customTableView.reloadData()。

您基本上是在要求tableview从datasource方法获取第一行的同时重新加载其所有数据。因此,这是一个无休止的循环。它永远不会显示任何数据。