我正在尝试将标题标签显示在我的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
}
}
}
}
答案 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接收了对象,那么这应该可以正常工作。
如果这有帮助,请告诉我。