2017-02-08 2 views
0

У меня есть вид таблицы,изображения не отображается в ячейках таблицы из firebase

У меня есть БД с помощью Firebase выборки некоторых данных: название, заголовка, изображения.

Заголовки и титры прекрасно отображаются и извлекаются из Firebase. Однако ни одно из изображений не появляется. ..

Любая помощь будет удивительно пожалуйста :) :)

Кодекса мой взгляд контроллера следующее:

// 
// Feed.swift 
// MobileAppDemo 
// 
// Created by Mikko Hilpinen on 31.10.2016. 
// Copyright © 2016 Mikkomario. All rights reserved. 
// 

import UIKit 
import FirebaseAuth 
import FirebaseDatabase 
import FirebaseStorage 
import SwiftKeychainWrapper 
import SwiftyJSON 

var posts = [Post]() 
var selectedIndexPath: Int = 0 

class FeedVC: UIViewController, UITableViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITableViewDelegate { 

@IBOutlet weak var feedTableView: UITableView! 

private var readPosts: ObserveTask? 

@IBOutlet weak var imageView: UIImageView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    feedTableView.dataSource = self 
    feedTableView.delegate = self 

    readPosts = Post.observeList(from: Post.parentReference.queryOrdered(byChild: Post.PROPERTY_CREATED)) { 
     observedPosts in 

     posts = observedPosts.reversed() 
     self.feedTableView.reloadData() 
    } 
} 

func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return posts.count 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = self.feedTableView.dequeueReusableCell(withIdentifier: "MessageCell")! as UITableViewCell 

    let messageImageView = cell.viewWithTag(1) as! UIImageView 
    let titleLabel = cell.viewWithTag(2) as! UILabel 
    let captionText = cell.viewWithTag(3) as! UILabel 


    titleLabel.text = posts[indexPath.row].title 
    titleLabel.numberOfLines = 0 

    captionText.text = posts[indexPath.row].caption 
    captionText.numberOfLines = 0 


    return cell 

} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    selectedIndexPath = indexPath.row 
    self.performSegue(withIdentifier: "push", sender: self) 
    self.feedTableView.reloadData() 
} 
} 

Для вызова изображения я имею следовать в меня cell.swift

// 
// MessageCell.swift 
// MobileAppDemo 
// 
// Created by Mikko Hilpinen on 31.10.2016. 
// Copyright © 2016 Mikkomario. All rights reserved. 
// 

import UIKit 
import FirebaseStorage 


class MessageCell: UITableViewCell 
{ 
// @IBOutlet weak var profileImageView: UIImageView! 
// @IBOutlet weak var likeButton: UIButton! 

@IBOutlet weak var messageImageView: UIImageView! 
@IBOutlet weak var messageTextView: UITextView! 
@IBOutlet weak var titleTextView: UITextView! 
@IBOutlet weak var linkbutton: UIButton! 

// @IBOutlet weak var likeLabel: UILabel! 

private var post: Post! 

func configureCell(tableView: UITableView, post: Post) 
{ 
    self.post = post 

    // Basic info 
    //  self.messageImageView.image = postPic 

    messageImageView.image = post.postPic 
    titleTextView.text = post.title 
    messageTextView.text = post.caption 


    // Post user 
    User.get(id: post.creatorId) 
    { 
     postCreator in 




    // Image 
    Storage.getImage(with: post.imageUrl) 
    { 
     postPic in 

     self.messageImageView.image = postPic 
     // Row height changes so table needs to be reset 
     tableView.beginUpdates() 
     tableView.endUpdates() 
    } 
} 

-

Я обновил свой feed.swift следующим:

messageImageView.sd_setImage(with: URL(string:"\(posts[indexPath.row].imageUrl)")) 

использованием SDWebImage - но им еще не имея проецируемых изображений дисплей :(

ответ

0

Вы не видите никаких изображений, потому что вы никогда не устанавливали. Вам необходимо позвонить configureCell в пределах cellForRowAt

+0

Хмм, спасибо Рассел, знаете ли вы, как этого достичь? Спасибо :) – tibewww

+0

просто сделайте вызов в 'cellForRowAt' - но ваш класс Cell немного странный. Вы не должны перезагружать 'tableView' изнутри ячейки, и вам вообще не нужна ссылка на' tableView'. Кроме того, вы создали выходы для некоторых элементов управления, которые вы используете, но затем игнорируете выходы и получаете доступ к элементам управления, используя значение тега. – Russell

+0

Хорошо, я стараюсь изо всех сил, я начинаю с ios dev, поэтому я не знаю, чтобы сделать это ehhehe – tibewww

Смежные вопросы