詳述控制器I具有與顯示登錄的用戶和在應用中的任何其他用戶之間的姓名,圖像和最後一個消息單元的TableViewController。因爲附加單個單元格只顯示未登錄用戶的名稱。單元格既有登錄用戶的名稱,也有登錄用戶的名稱,所以爲了顯示未登錄的用戶名,我使用了這個代碼。SEGUE從表視圖
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
,並顯示未登錄用戶的名字,這是我想要的,但是當我Segue公司到了新的一頁,我也想通過這個名字,根據所選擇的小區。
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
}}
但是當我點擊任何單元格時,它總是顯示我單擊的第一個單元格的名稱。
非常感謝!這工作完美 – juelizabeth
不客氣,如果您只使用viewcontroller「用戶名」變量設置爲chatVC您可以刪除它。 – Vardan