чат-мессенджер UITableViewCell, загрузка сообщения - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь загрузить сообщения в свой мессенджер, используя firebase, однако он не отображается. Я установил фон для своих ячеек на светло-серый, и я вижу, что он работает, если количество сообщений в базе данных и ячеек в светло-сером совпадают.

код, который я использовал:

func loadMsg() {
    let toId = user!.id!
    let fromId = Auth.auth().currentUser!.uid
    let ref = Database.database().reference().child("privateMessages").child(fromId).child(toId)
    ref.observe(.value) { (snapshot) in

        if let snapshot = snapshot.children.allObjects as? [DataSnapshot] {

            self.messages.removeAll()

            for data in snapshot {

                let newMsg = Message(dictionary: data.value as! [String: AnyObject])

                self.messages.append(newMsg)

            }
        }

        DispatchQueue.main.async {self.tableView.reloadData()}
    }
}

моя база данных firebase выглядит так: enter image description here

и мой симулятор выглядит как

enter image description here

с моей раскадровки:

enter image description here

любая причина, по которой мой текст не отображается ???

* ОБНОВЛЕНО НИЖЕ

Я пытался настроить свои ячейки, и теперь кажется, что он движется в правильном направлении, но у меня происходит сбой на моем sentView, где он падает из-за

Тема 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании Необязательное значение

мой код для ячейки табличного представления

import UIKit
import Firebase
import FirebaseDatabase

class ChatMessageCell: UITableViewCell {

var message: Message!

@IBOutlet weak var receivedMsgLabel: UILabel!
@IBOutlet weak var sentMsgLabel: UILabel!
@IBOutlet weak var sentView: UIView!
@IBOutlet weak var receivedView: UIView!

var currentUser = Auth.auth().currentUser!.uid

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

func configCell(message: Message) {

    self.message = message

    if message.fromId == currentUser {

        sentView.isHidden = false

        sentMsgLabel.text = message.textMessages

        receivedMsgLabel.text = ""

        receivedMsgLabel.isHidden = true

    } else {

        sentView.isHidden = true

        sentMsgLabel.text = ""

        receivedMsgLabel.text = message.textMessages

        receivedMsgLabel.isHidden = false
    }
  }

}

as for my table is 

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

        let message = messages[indexPath.row]

        cell.configCell(message: message)
        cell.backgroundColor = UIColor.lightGray

        return cell
    }

я иду в правильном направлении ?? извините, не знаю, где разместить мои коды, поэтому размещаю их в разделе ответов.

1 Ответ

0 голосов
/ 02 мая 2018

«Несбалансированные вызовы для начала / окончания появления переходов»

Сбой происходит при попытке отобразить содержимое до завершения отображения ячейки.

Попробуйте создать новую пользовательскую ячейку xib и попробуйте.

зарегистрируйтесь, как это.

self.tableView.register(UINib(nibName: "TableViewCell", bundle: nil), forCellReuseIdentifier: "TableViewCell")


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

    let message = messages[indexPath.row]

    cell.configCell(message: message)
    cell.backgroundColor = UIColor.lightGray

    return cell
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...