開発環境
Swift3
Xcode8
Firebase3
症状
Firebaseからデータを取得してそのデータをTableViewに表示させるプログラムを書いています。
取得したデータを配列変数Items1に入れるようにしているのですが、何も表示がされません。
下記コードを見て頂きたいのですが、①の時にはデータは入っていますが、③の時にはデータは何も入っていません。コンソールで見るとなぜか③→①の順番で表示されています。
②でreloadData()をすると正常にテーブルにデータは表示されますが、通常はreloadData()をしなくても表示されると思うのですが...。
何かヒントを頂けると幸いです。
よろしくお願いいたします。
ViewController.swift
1import UIKit 2import Firebase 3 4class CustomerViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 5 6 var Items1: [String] = [] 7 @IBOutlet weak var table: UITableView! 8 var DBRef:FIRDatabaseReference! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 13 DBRef = FIRDatabase.database().reference() 14 15 let defaultPlace = DBRef.child("users/01") 16 defaultPlace.observe(FIRDataEventType.value, with: { snapshot in 17 if let postDict = snapshot.value as? [String: NSDictionary] { 18 19 var newItems: [String] = [] 20 for (_, value1) in postDict { 21 newItems.append(value1["name"] as! String) 22 } 23 24 self.Items1 = newItems 25 } 26 // print(self.Items1) ① 27 // self.table.reloadData() ② 28 }) 29 // print(self.Items1) ③ 30 } 31 32 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 33 return Items1.count 34 } 35 36 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 37 tableView.tableFooterView = UIView(frame: .zero) 38 39 let cell = tableView.dequeueReusableCell(withIdentifier: "MyCell", for: indexPath as IndexPath) 40 41 let label1 = cell.viewWithTag(1) as! UILabel 42 label1.text = "\(Items1[indexPath.row])" 43 44 return cell 45 46 } 47}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/22 03:12