TableView内容未显示

时间:2018-04-19 02:10:02

标签: ios swift xcode uitableview

我在UITableView内创建了ViewController。这是我为填充TableView内容而添加的代码。但是,没有内容出现。我已创建了一个自定义的tableView单元格,我在cellNib中调用了PostTableViewCell。程序运行时,它会显示带有分隔线的原型单元格,但不显示任何自定义内容。

import Foundation
import UIKit
import Firebase

class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var tableView:UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    tableView = UITableView(frame: view.bounds, style: .plain)
    //tableView.backgroundColor = UIColor.blue

    let cellNib = UINib(nibName: "PostTableViewCell", bundle: nil)
    tableView.register(cellNib, forCellReuseIdentifier: "postCell")
    view.addSubview(tableView)

    var layoutGuide:UILayoutGuide!

    if #available(iOS 11.0, *) {
        layoutGuide = view.safeAreaLayoutGuide
    } else {
        layoutGuide = view.layoutMarginsGuide
    }

    tableView.leadingAnchor.constraint(equalTo: layoutGuide.leadingAnchor).isActive = true
    tableView.topAnchor.constraint(equalTo: layoutGuide.topAnchor).isActive = true
    tableView.trailingAnchor.constraint(equalTo: layoutGuide.trailingAnchor).isActive = true
    tableView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor).isActive = true

    tableView.delegate = self
    tableView.dataSource = self
    tableView.reloadData()
    // Do any additional setup after loading the view.
}

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

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

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

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

/*
// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
}
*/

}

2 个答案:

答案 0 :(得分:1)

您实际上并未在tableView:cellForRowAt:方法中配置单元格:

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

通常,您需要将值插入自定义单元格的元素中。您的单元格标签文本,图像等的“内容”通常会插入到此方法的单元格元素中。如果您查看新Xcode项目中的代码,您将看到:

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

    let object = objects[indexPath.row] as! NSDate
    cell.textLabel!.text = object.description
    return cell
}

请注意检索数据的行:let object = objects[indexPath.row] as! NSDate

后面是设置textLabel的文本值:

的行
cell.textLabel!.text = object.description

答案 1 :(得分:0)

代码看起来正确.. 确保已在cellForRowAt数据源方法中为表格单元格分配内容。