2017-03-05 5 views
0

Ich versuche, meine Zelle zu erweitern, wenn zusätzlicher Text eingegeben wird. Ich möchte nicht "..." Am Ende möchte ich, dass sich die Zelle automatisch ausdehnt. Ich habe diese zwei Schritte gemacht, aber es funktioniert nicht.Automatische Zeilenhöhe in der Tabellenzelle

enter image description here

Schritt 1

 self.tableView.dataSource = self 
     self.tableView.delegate = self 

     tableView.estimatedRowHeight = 44 
     tableView.rowHeight = UITableViewAutomaticDimension 

Schritt 2

 messageLabel.numberOfLines = 0 

Aus irgendeinem Grund meiner Zelle expandiert nicht, was mache ich falsch?

import UIKit 
import Foundation 


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



class GeneralChatroom: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate { 

    @IBOutlet weak var messageTextField: UITextField! 
    @IBOutlet weak var tableView: UITableView! 
    var generalRoomDataArr = [postStruct]() 

    override func viewDidLoad() { 
     super.viewDidLoad() 


     self.tableView.dataSource = self 
     self.tableView.delegate = self 

     tableView.estimatedRowHeight = 44 
     tableView.rowHeight = UITableViewAutomaticDimension 





    } 


    @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! 



    } 



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


    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") 



     //Set message label to display message 
     let messageLabel = cell?.viewWithTag(2) as! UILabel 
     messageLabel.text = generalRoomDataArr[indexPath.row].message 
     messageLabel.numberOfLines = 0 


     // your cell coding 
     return cell! 
    } 





}//END CLASS 

UPDATE: Ich habe die aktuellen Einschränkungen aber mein dynamisches Zellwachstum nicht funktioniert. Meine Zelle zeigt immer noch "..." Kann mir jemand helfen, warum zu verstehen? Ich habe versucht, auf die vorgeschlagenen Einschränkungen zurückzusetzen, aber es funktioniert nicht.

enter image description here

enter image description here

+0

hey @nil tun u dies mit der Verwendung von Auto-Layout? –

+0

nein, ich glaube nicht, dass ich – nil

+0

bitte durch Auto-Layout gehen werde es für diese Aufgabe einfacher machen. –

Antwort

0

Stellen Sie sicher, Auto-Layout für die benutzerdefinierte UITableViewCell haben. Ändern Sie den estimatedRowHeight, versuchen Sie dies:

tableView.estimatedRowHeight = 200 
+0

Wenn Sie eine benutzerdefinierte Beschriftung in Ihrer Zelle haben, fügen Sie die Einschränkungen/das automatische Layout hinzu. Wie ich die normale UITableViewCell, funktionierte es für mich :) –

+0

Wenn Sie ein Label hinzugefügt haben, wählen Sie die Bezeichnung, Pin und sagen, "Zurücksetzen auf die vorgeschlagenen Einschränkungen" –

+0

können Sie detaillierter in die Art von neuen zu schnellen – nil

0

Sie die delegierte Methode von UITableView verwenden können:

func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
     return .AutomaticDimension 
} 
func tableView(_ tableView: UITableView,estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
{ 
     return 60 
} 

Aber zuerst müssen Sie die automatischen Layout-Einschränkung für das Label WRT zum Inhalt Ansicht von TableViewCell eingestellt .

0

Swift 2,3

// MARK: - TableViewDelegate Setup 

extension NotificationVC : UITableViewDelegate,UITableViewDataSource { 
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 

    } 

    func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return UITableViewAutomaticDimension 

    } 

    } 
+0

Ich habe ein Update mit einem aktuellen Problem geschrieben kann mir jemand helfen, das Problem zu verstehen. – nil

+0

kannst du das projekt mit bestimmten problemen posten hast du jetzt in git und teile mir das mit –

Verwandte Themen