2015-09-18 13 views
5

Ho una vista tabella denominata todoTableView con celle create dall'utente. Ogni cella ha una visualizzazione di testo. Desidero modificare l'altezza della cella in base al contenuto della visualizzazione testo. Questo è quello che ho provato:Modifica altezza cella per il contenuto del testoVisualizza all'interno della cella

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell 
     cell.bounds.size.height = cell.textView.bounds.size.height 

     return cell 
    } 
+0

Si sta utilizzando l'autolayout? – Irfan

+0

Dai un'occhiata a [questa domanda] (http://stackoverflow.com/questions/14956189/calling-heightforrowatindexpath-from-within-cellforrowatindexpath). –

+0

@Irfan Sì. Phoen1xUK - Non so Objective-C – Eliko

risposta

21

Bound tuo textview con cell da tutti i lati con i vincoli marginali (iniziali, finali, Top e vincoli inferiore)

enter image description here

  • Disabilita textView scorrimento

In viewDidLoad() aggiungere la seguente.

tableView.estimatedRowHeight = 44.0 
tableView.rowHeight = UITableViewAutomaticDimension 

Questo renderà le dimensioni della cella in base alla dimensione del contenuto di textview.

Dai un'occhiata alla causa:

enter image description here

Non è necessario scrivere heightForRowAtIndexPath.

+0

Per qualche motivo non funziona, forse non sto usando marginale come giusto. Puoi dirmi per favore come farlo? – Eliko

+2

Hai lo stesso caso come sopra? Se sì, seleziona textview e imposta i suoi vincoli iniziali, finali, superiori e inferiori a zero con contentView di cella. Assicurati di disabilitare lo scorrimento o f textview. Prova questo e fammi sapere se aiuta. grazie – Irfan

+0

Ok, l'ho appena fatto e non funziona ancora ... continua a scrivere ma l'altezza della cella non cambia – Eliko

-3

Si dovrebbe anche implementare heightForRowAtIndexPath:.

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    return // Calculate your custom row height here. 
} 
+0

Cosa scrivere dopo il reso? Voglio che sia dinamico e non statico. – Eliko

+0

Avrai bisogno di calcolare l'altezza della riga e questo dipende molto esattamente da quello che vuoi fare. Puoi ottenere l'altezza in base alla cella recuperandola, memorizzandola nella cache durante la creazione della cella o determinandola calcolando l'altezza del testo (aggiungendo temporaneamente una vista o tramite 'sizeThatFits'. Vedi http://stackoverflow.com/questions/ 19049532/how-do-i-size-a-uitextview-to-its-content-on-ios-7 per ulteriori metodi –

+0

Questa soluzione è obsoleta ed è computazionale più costosa di quella canonica.Il iOS 8 consente il dimensionamento automatico delle celle come suggerito da @Irfan –

-1

Irfan's answer non ha funzionato per me.

Funziona dopo andare in Impostazioni dimensione e selezionare "Automatico" per "Altezza riga".

Problemi correlati