UITableView Cell内容不显示swift

时间:2017-07-11 21:18:17

标签: ios swift uitableview tableview

我正在尝试将标题标签显示在我的tableview单元格上,但在运行时没有显示。我还尝试将一个标准标签放入单元格中,但是当它运行时它会消失。

import UIKit
import Firebase
import FirebaseDatabase
import SDWebImage

struct postTry {
    let title : String!
}

class CarMakeViewController: UIViewController, UITableViewDataSource, UITableViewDelegate  {
    var posts = [postTry]()

    override func viewDidLoad() {
        super.viewDidLoad()

        let ref = Database.database().reference().child("Posts")

        ref.observeSingleEvent(of: .value, with: { snapshot in
            print(snapshot.childrenCount)

            for rest in snapshot.children.allObjects as! [DataSnapshot] {
                guard let value = rest.value as? Dictionary<String,Any> else { continue }

                guard let  title = value["Title"] as? String else { continue }

                let post = postTry(title: title)

                self.posts.append(post)
            }

            self.posts = self.posts.reversed();
            self.tableView.reloadData()
        })
    }

    @IBOutlet weak var tableView: UITableView!

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

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

        let label1 = cell?.viewWithTag(21) as! UILabel
        label1.text = posts[indexPath.row].title

        return cell!
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "makemodel" {
            if let indexPath = tableView.indexPathForSelectedRow {
                let destVC = segue.destination as! DetailNewsViewController
                destVC.titleText =  posts[indexPath.row].title

            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您需要将tableView委托给ViewController类

tableView.delegate = self
tableView.datasource = self

答案 1 :(得分:1)

首先尝试以下方法: 将您的cellForRowAt方法更改为:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellMake", for: indexPath) as! UITableViewCell
    let post = posts[indexPath.row]
    cell.textLabel.text = post.title

    return cell
}

如果您已正确设置了tableview并且确定从Firebase接收了对象,那么这应该可以正常工作。

如果这有帮助,请告诉我。