2016-04-25 3 views
6

ho un UITableViewController, con una cellula del uitableviewcellstylesubtitle stile, dove il sottotitolo-etichetta ha NumberOfLines = 0predefinita UITableView cellulare altezza automatica

e se faccio

tableView.rowHeight = UITableViewAutomaticDimension 
tableView.estimatedRowHeight = 44.0 

cellule poteva fare automatica altezza, può essere vero - non è possibile utilizzarlo sulle celle predefinite?

EDIT:

popolazione semplice

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 
    let thisHelpArticle = helpObjects[indexPath.section] 

    cell.textLabel!.text = thisHelpArticle.helpHeadline 
    cell.detailTextLabel!.text = thisHelpArticle.helpDescription 

    return cell 
} 
+0

Abbiamo bisogno di ulteriori informazioni. Per favore mostraci come compilare le celle. Inoltre, stai usando l'autolayout? – ozgur

+0

Come già detto, è solo un controllore uitableview con una cella predefinita con lo stile Sottotitoli, quindi non è possibile aggiungere l'autolayout, aggiungerà popolazione sopra – magnuskahr

+0

Puoi chiamare 'cell.layoutIfNeeded()' giusto prima di restituire la cella? – ozgur

risposta

4

AGGIORNAMENTO !!! Affinché il sottotitolo della cella predefinito autorizzi automaticamente la cella, DEVI impostare il numero di righe di entrambe le etichette su 0. Altrimenti non funziona. Strano.

cell.textLabel?.numberOfLines = 0 
cell.detailTextLabel?.numberOfLines = 0 

È possibile ridimensionare automaticamente le celle interrotte di default. Nella sua forma più semplice ho il seguente codice. Che è il ridimensionamento automatico della cella di sottotitoli predefinita.

class ViewController: UIViewController { 

    @IBOutlet var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.dataSource = self 
     tableView.delegate = self 
     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 44 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 

extension ViewController: UITableViewDataSource { 
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 2 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) 
     let thisHelpArticle = "Lorem ipsum dolor sit amet, vel porttitor blandit, aliquam tristique vestibulum, enim vel eros fames id, in gravida vestibulum gravida tempor, et vel libero sed mauris. Suspendisse ut placerat viverra dictum, ante ante vel ut vestibulum sollicitudin phasellus. Dictumst adipiscing adipiscing nisl, fusce ut. Ante wisi pellentesque, et aliquam rhoncus eget convallis quam voluptate, ut nec quis, sodales ullamcorper elementum pellentesque sagittis vitae, dolor justo fermentum amet risus. Eu placerat ultricies. Ipsum sodales, massa elit, in neque, sed penatibus gravida, cursus eget. Ut tincidunt at eu, wisi dis vel penatibus eget, volutpat ligula vel tortor morbi feugiat, dui et eiusmod dis sociis. Iaculis lorem molestie laoreet sit, orci commodo, fusce vestibulum sapien, quisque egestas maecenas sed rem in nisl." 

     cell.textLabel?.numberOfLines = 0 
     cell.detailTextLabel?.numberOfLines = 0 

     cell.textLabel!.text = thisHelpArticle 
     cell.detailTextLabel!.text = thisHelpArticle 

     return cell 
    } 
} 

extension ViewController: UITableViewDelegate { 

} 
+0

Ho capito lo stesso proprio come lo hai scritto, la cella diventa più grande ma ancora i tagli di un testo come posso vedere – magnuskahr

+0

Effettivamente lo fa. Immagino che tu debba sottoclassi. Però strano. Voto positivo per la domanda illuminante. – oyalhi