2017-12-23 25 views
0

私は、firebaseを使用してInstagram-cloneを構築するのに役立ちます。問題はありません。投稿フィードできません。firebaseストレージから画像を取得してtableViewセルに表示できます。 、:(くださいfirebaseストレージから画像を取得してtableViewセルに表示

インポートのUIKit

インポートFirebaseAuth

FirebaseDatabaseインポート

クラスHomeViewController:のUIViewController、UITableViewDelegate {

@IBOutlet weak var tableview: UITableView! 
var posts = [Post]() 
override func viewDidLoad() { 
    super.viewDidLoad() 

    tableview.dataSource = self 
    loadposts() 

// var post = Post(captiontxt: "test", photoUrlString: "urll") 
// print(post.caption) 
// print(post.photoUrl) 

} 

func loadposts() { 
    Database.database().reference().child("posts").observe(.childAdded){ (snapshot: DataSnapshot)in 
     print(Thread.isMainThread) 
      if let dict = snapshot.value as? [String: Any]{ 
      let captiontxt = dict["caption"] as! String 
      let photoUrlString = dict["photoUrl"] as! String 
      let post = Post(captiontxt: captiontxt, photoUrlString: photoUrlString) 
      self.posts.append(post) 
      print(self.posts) 
      self.tableview.reloadData() 
     } 
    } 
} 

@IBAction func logout(_ sender: Any) { 
    do { 
     try Auth.auth().signOut() 
    }catch let logoutErrorr{ 
     print(logoutErrorr) 
    } 
    let storyboard = UIStoryboard(name: "Start", bundle: nil) 
    let signinVC = storyboard.instantiateViewController(withIdentifier: "SigninViewController") 
    self.present(signinVC, animated: true, completion: nil) 


} 

} 拡張HomeViewController:UITableViewDataSource { FUNC用のtableView(_のtableView:のUITableView、numberOfRowsInSection部:INT) - >のInt { 戻りposts.count

} 
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableview.dequeueReusableCell(withIdentifier: "imagecell", for: indexPath) as! PostCellTableViewCell 
    cell.captionLabel.text = posts[indexPath.row].caption 
    cell.postimage.image = posts[indexPath.row].photoUrl 
    // print(cell.captionLabel.text) 
    // print(cell.daysLabel.text) 


    return cell 
} 

}

enter code here 

インポート財団 class Post { VARキャプション:文字列 するvar photoUrl:文字列

init(captiontxt: String, photoUrlString: String) { 
    caption = captiontxt 
    photoUrl = photoUrlString 

} 

}

答えて

0
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableview.dequeueReusableCell(withIdentifier: "imagecell", for: indexPath) as! PostCellTableViewCell 

    cell.postimage.image = nil 

    cell.tag += 1 
    let tag = cell.tag 

    cell.captionLabel.text = posts[indexPath.row].caption 

    let photoUrl = posts[indexPath.row].photoUrl 

    getImage(url: photoUrl) { photo in 
     if photo != nil { 
      if cell.tag == tag { 
       DispatchQueue.main.async { 
        cell.postimage.image = photo 
       } 
      } 
     } 
    } 

    return cell 
} 

func getImage(url: String, completion: @escaping (UIImage?) ->()) { 
    URLSession.shared.dataTask(with: URL(string: url)!) { data, response, error in 
     if error == nil { 
      completion(UIImage(data: data!)) 
     } else { 
      completion(nil) 
     } 
    }.resume() 
} 
+0

その作業が、何かが間違っhapping – ghazzway

+0

https://i.stack.imgur.com/XFLCR.png – ghazzway

+0

ます。https: //i.stack.imgur.com/yEnzM.png – ghazzway

関連する問題