TableView 不显示数组数据

Posted

技术标签:

【中文标题】TableView 不显示数组数据【英文标题】:TableView not display the array datas 【发布时间】:2019-09-03 12:22:51 【问题描述】:
import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet var myTableView: UITableView!
        didSet 
            tableView.dataSource = self
            //tableView.reloadData()
        
    

    var data = [String]()

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        data = ["data1","data2", "data3"]
        //tableView.reloadData()
    

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell

        cell.lbl?.text = data[indexPath.row]

        return cell
    

【问题讨论】:

您发布的代码甚至无法编译...这是您的问题吗?或者,您没有发布您正在使用的实际代码吗? 我只添加了我尝试一些解决方案的代码的重要部分。当然我还有其他必要的 tableview 功能。 好的 - 好吧,“代码的重要部分” 错了!。您需要发布您的实际代码,否则人们只是在猜测您可能做错了什么。 @DonMag 我试图添加,但不知何故它给出了错误,我无法编辑,所以这是紧急情况,我只是这样发送 您是否将您的单元格设计为 Storyboard 中的原型?如果是这样,您是否为此写了class?如果是这样,那个类的名称是什么? 【参考方案1】:

您需要设置委托,但您没有正确使用代码。

@IBOutlet var myTableView: UITableView!
var data:[String]!
    didSet 
        tableView.reloadData()
    


override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    tableView.dataSource = self
    tableView.delegate = self
    data = ["data1","data2", "data3"]


 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return data.count

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell

    cell.lbl?.text = data[indexPath.row]

    return cell


注意:如果您的单元格是 nib 文件,则在设置 delegate=self 之前在 viewDidLoad 中注册您的单元格

tableView.register(UINib(nibName: "nibname", bundle: nil), forCellReuseIdentifier: "myCell")

【讨论】:

您的单元格是 nib 文件? 是的,我使用 tableViewCell 类 它给出了一个错误。 “原因:'Could not load NIB in bundle:'NSBundle 你有 .swift 文件还是 .XIB 文件?【参考方案2】:

为了让你开始,这就是你需要的所有代码:

class MyCell: UITableViewCell 
    @IBOutlet var lbl: UILabel!


class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 

    @IBOutlet var myTableView: UITableView!

    var data = [String]()

    override func viewDidLoad() 
        super.viewDidLoad()

        data = ["data1","data2", "data3"]

        // set the table view's dataSource
        myTableView.dataSource = self

    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return data.count
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

        let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyCell

        cell.lbl?.text = data[indexPath.row]

        return cell

    


这假设你

在 Storyboard 中创建了单元原型 将其自定义类分配给MyCell 给它一个标识符“myCell” 为其添加标签并将其连接到@IBOutlet var lbl: UILabel!

【讨论】:

是的,它是有效的,我认为问题在于我像你一样改变了课程,它有效。谢谢!!【参考方案3】:

移动

tableView.dataSource = self

到 ViewDidLoad() 并添加

tableView.delegate = self

以下数据源

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
        return data.count
    

【讨论】:

以上是关于TableView 不显示数组数据的主要内容,如果未能解决你的问题,请参考以下文章

TableView 不显示数据

Tableview 不显示我附加的数组,即使它们不为空

在tableView中单击不同行后在collectionView中显示不同的数组

TableView 中不显示数据

tableView 不显示我的数据

javafx tableView 不显示数据,getter setter 有啥问题?