【发布时间】:2017-07-11 14:25:48
【问题描述】:
我有一个 TableViewController,其中包含显示登录用户和应用程序中任何其他用户之间的名称、图片和最后一条消息的单元格。因为附加了一个单元格以仅显示未登录用户的名称。该单元格有登录用户的名称和没有登录用户的名称,因此为了显示未登录用户的名称,我使用了此代码。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MessageCell", for: indexPath) as! MessageTableViewCell
if message.ReceiverId != self.loggedInUserUid {
var newVariable = message.ReceiverId
if let imageName = newVariable {
let ref = FIRDatabase.database().reference().child("users").child(imageName)
ref.observeSingleEvent(of: .value, with: { (snapshot)
in
if let dictionary = snapshot.value as? [String: AnyObject]{
for post in dictionary {
let messages = snapshot.value as! [String: AnyObject]
//let messages = post.value as! [String: AnyObject]
for (id, value) in messages {
self.username = messages["username"] as? String
}}}})}}else if message.senderId != self.loggedInUserUid {
et newVariable = message.senderId
if let imageName = newVariable {
let ref = FIRDatabase.database().reference().child("users").child(imageName)
ref.observeSingleEvent(of: .value, with: { (snapshot)
in
if let dictionary = snapshot.value as? [String: AnyObject]{
for post in dictionary {
let messages = snapshot.value as! [String: AnyObject]
// let messages = post.value as! [String: AnyObject] ---> very confused why it changed from post to snapshot, if I put post.value, it doesn't let me run
for (id, value) in messages {
self.username = messages["username"] as? String
它会显示未登录的用户名,这是我想要的,但是当我转到新页面时,我还想传递该名称,具体取决于所选的单元格。
override public func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "MessageNow", let chatVc = segue.destination as? SendMessageViewController else {
return
}
chatVc.username = self.username
}}
但是当我点击任何单元格时,它总是显示我点击的第一个单元格的名称。
【问题讨论】:
标签: ios swift firebase firebase-realtime-database