2017-12-23 3 views
0

Ich brauche nur Hilfe Ich baue Instagram-Klon mit Firebase und ich habe ein Problem, whit Post-Feed Ich kann nicht abrufen Bild aus Firebase-Speicher auf TableView Zelle zeigen können Sie mir helfen bitte :(Bild aus Firebase-Speicher abrufen, um auf Tabelle anzuzeigen Zelle

Import UIKit

Import FirebaseAuth

Import FirebaseDatabase

Klasse 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) 


} 

} Verlängerung HomeViewController: UITableViewDataSource { func tableview (_ tableview: UITableView, numberOfRowsInSection Schnitt: Int) -> Int { return 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 

importieren Foundation Klasse Post { var Bildunterschrift: String var photoUrl: String

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

} 

}

Antwort

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

seine Arbeit aber etwas falsch happing – ghazzway

+0

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

+0

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

Verwandte Themen