Ho un UITableViewCell personalizzato (sottoclassato) che contiene alcuni UILabels, un UIButton e un NSBlock come proprietà. Questa sottoclasse è denominata ExploreCell
. Due delle proprietà sono UILabels e sono denominati rispettivamente waitLabel
e lastUpdateLabel
.L'aggiornamento del frame della subview di UITableViewCell non ha alcun effetto
Quando il contenuto di lastUpdateLabel
è nullo o è è vuoto cioè @""
, devo spostare il waitLabel
verticalmente (sull'asse Y) 10 pixel. Lo faccio controllando alcuni oggetti in un NSDictionary
come mostrato nel seguente codice che ho inserito nel metodo -tableView:cellForRowAtIndexPath:
.
CGRect frame = cell.waitLabel.frame;
if ([[venue allKeys] containsObject:@"wait_times"] && ([[venue objectForKey:@"wait_times"] count] > 0)) {
frame.origin.y = 43;
}
else {
frame.origin.y = 53;
}
[cell.waitLabel setFrame:frame];
Tuttavia, questo codice funziona a intermittenza, e dopo aver provato a chiamare -setNeedsLayout
, ancora non funziona. A intermittenza, voglio dire che dopo averlo fatto scorrere alcune volte, una o due celle che corrispondono ai criteri per spostare l'origine della cella verso il basso di 10 pixel, hanno effettivamente cambiato il loro frame waitLabel
.
Per favore, puoi dirmi perché questo si sta verificando e come può essere risolto.
Dove hai inserito quel codice? – Uby
-cellForRow .... –
Stai utilizzando il layout automatico? – rdelmar