2017-07-11 19 views
-2

タイトルラベルをテーブルビューセルに表示しようとしていますが、実行中に何も表示されません。私もスタンダードラベルをセルに入れようとしましたが、それを実行すると消えます。UITableViewセルの内容がすばやく表示されない

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

にあなたのtableViewを委任する必要があります。 – AGrammerPro

答えて

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 
} 

あなたが正しくあなたのテーブルビューを設定していると、あなたがFirebaseからオブジェクトを受信して​​いることを確認している場合、これは動作するはずです。

これが役立ったかどうか教えてください。

1

あなたは、あなたのセルとラベルを保持している新しいテーブルビューセルを作成し、別.xibファイルを作成し、あなたのViewControllerクラス

tableView.delegate = self 
tableView.datasource = self 
関連する問題