2017-03-02 1 views
0

1.) Wie kann ich die Nachricht in meinem Chat erweitern, so dass es den TableView-Block auf die Größe der Nachricht konfiguriert, ohne das "....." am Ende hinzuzufügen.TableView Chat Erweitern Nachricht

2.) Wenn ich tippe, sende die Nachricht uploads in die Datenbank, aber nicht in die tableView, bis ich den Controller neu lade? Was ist der beste Weg, um dies zu beheben?

3.) Laden Sie die Tabellenansicht so, dass die letzte Nachricht unten angezeigt wird?

Bild von meinem Tableview:

1

import UIKit 
import Foundation 
import Firebase 
import FirebaseDatabase 
import FirebaseStorage 

struct postStruct { 
    let username : String! 
    let message : String! 
    let photoURL : String! 
} 

class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet weak var messageTextField: UITextField! 

    var generalRoomDataArr = [postStruct]() 

    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let ref = FIRDatabase.database().reference() 

     ref.child("general_room").queryOrderedByKey().observe(.childAdded, with: {snapshot in 

      let snapDict = snapshot.value as? NSDictionary 
      let username = snapDict?["Username"] as? String ?? "" 
      let message = snapDict?["Message"] as? String ?? "" 
      let firebaseUserPhotoURL = snapDict?["photo_url"] as? String ?? "" 

      self.generalRoomDataArr.insert(postStruct(username: username, message: message, photoURL: firebaseUserPhotoURL), at: 0) 
      self.tableView.reloadData() 

     }) 

    } 

    @IBAction func backButtonPressed(_ sender: UIButton) { 
     self.performSegue(withIdentifier: "BackToRoom", sender: nil) 
    } 


    //Message Send button is pressed data uploaded to firebase 
    @IBAction func sendButtonPressed(_ sender: UIButton) { 

     let message : String = self.messageTextField.text! 
     UploadGeneralChatRoom(message: message) //update general_room 
     //self.tableView.reloadData() 
     //UploadUserData() //Update Rank in database 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return generalRoomDataArr.count // your number of cell here 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "cell") 

     let usernameLabel = cell?.viewWithTag(1) as! UILabel 
     usernameLabel.text = generalRoomDataArr[indexPath.row].username 

     let messageLabel = cell?.viewWithTag(2) as! UILabel 
     messageLabel.text = generalRoomDataArr[indexPath.row].message 


     let imageView = cell?.viewWithTag(3) as! UIImageView 

     //Make Porfile Image Cirlce 
     imageView.layer.cornerRadius = imageView.frame.size.width/2 
     imageView.clipsToBounds = true 

     //User Profile image in tableview 
     if generalRoomDataArr[indexPath.row].photoURL != nil 
     { 
      //let imageView = cell?.viewWithTag(3) as! UIImageView 

      if let url = NSURL(string: generalRoomDataArr[indexPath.row].photoURL) { 

       if let data = NSData(contentsOf: url as URL) { 

        imageView.image = UIImage(data: data as Data) 
       } 
      } 
     } 







     // your cell coding 
     return cell! 
    } 

} 

Antwort

1

Antwort für Q.1:

Sie können die Anzahl der Zeilen Ihrer Nachricht setzen Label zu ; Es wird Ihr Label vertikal erweitern, wenn Sie viele Texte haben.

können Sie auch die Tableview die festlegen müssen Zeilenhöhe auf automaticDimension wie folgt: -

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 140 

Antwort für Q.2:

Versuchen Sie tableView Nachladen nach Sie fügen es zu UploadUserData() hinzu.

Antwort für Q.3:

Wenn Sie wollen einfach nur das Sortierverhalten umkehren als statt Art benötigen Sie Reverse-Eigenschaft verwenden

yourdataArray.reverse() 
+0

dankt Ihnen! Sie sind der beste – nil

+0

, wenn ich die ZahlOfLine = 0 gesetzt habe, bewegt es sich immer noch nicht zur nächsten Zeile. – nil

+0

Es kann vorkommen, dass eine feste Höhenbeschränkung zugewiesen wird. – Aashish

Verwandte Themen