Ho una sottoclasse personalizzata UITableViewCell
che ha applicato vincoli di autolayout in Interface Builder. La cella contiene più viste, incluso un UITextField
.dequalificato UITableViewCell ha un layout errato fino a scorrimento (utilizzando il caricamento automatico)
Pertinente, la dimensione di UITextField
è limitata in modo tale che vi sia una spaziatura orizzontale predefinita tra questa e la vista successiva.
La cella viene istanziata come segue:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ProgressCell";
ProgressCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath]
cell.textField.text = @"Some string that is different for each cell";
return cell;
}
Quando appare per la prima cella, il UITextField
sovraccarichi di telaio corretta, e appare dietro il UIView
alla sua destra. Tuttavia, quando faccio scorrere la cella fuori dallo schermo, metto in pausa e quindi lo scorrimento indietro, il testo viene troncato correttamente.
Un esempio è mostrato sotto (a seconda modifica).
Ho provato a chiamare [cell setNeedsLayout]
e [cell setNeedsDisplay]
per la cella in cellForRowAtIndexPath
, oltre a eseguirli dopo un ritardo. Né è efficace.
Che scorre fuori dallo schermo facendo che sta causando la cellula di apparire in modo corretto, e come posso né replicare questo o risolvere il problema di fondo?
EDIT:
Calling
[self.tableView reloadData];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationAutomatic];
al fine di ricaricare il cellulare, sembra causare il layout di apparire in modo corretto prima volta.
Tuttavia, ora interrompe (occasionalmente) sullo scorrimento (ovvero, quando si esegue il backup, i vincoli di layout non vengono ora applicati correttamente).
Calling [cell setNeedsLayout]
in cellForRowAtIndexPath
sembra non per risolvere questo problema.
EDIT2:
La cella in alto, come mostrato here, è apparso correttamente (come la cella in basso fa) fino a quando ho scorrere verso il basso dello schermo. Da allora è scomparso.
Ciò riflette il problema a partire dalla prima modifica - E 'il secondo di rendering che è il problema (mi fa pensare che potrebbe avere qualcosa a che fare con il riutilizzo della cellula?)
State ottenendo eventuali avvisi circa i vincoli nella console? – rdelmar
Puoi includere alcuni screenshot? – jrturton
@rdelmar Ho scritto la mia categoria di Autolayout (non ne abbiamo discusso prima?) Se sei interessato: http://commandshift.co.uk/blog/2013/02/20/creating-individual-layout-constraints/ – jrturton