Mam niestandardową (podklasowaną) UITableViewCell, która zawiera kilka UILabeli, UIButton i NSBlock jako właściwości. Ta podklasa nazywa się ExploreCell
. Dwie z właściwości to UILabels i mają odpowiednio nazwy: waitLabel
i lastUpdateLabel
.Aktualizacja ramki UITableViewCell subview nie ma żadnego efektu
Gdy zawartość jest zerowa lub jest pusta, tj. @""
, muszę przesunąć pionowo w dół (na osi Y) o 1 0 pikseli wartość waitLabel
. Robię to, sprawdzając niektóre obiekty w NSDictionary
, jak pokazano w poniższym kodzie, który umieściłem w metodzie -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];
Jednak ten kod z przerwami działa, a próba połączenia z numerem -setNeedsLayout
nadal nie działa. Mam tu na myśli to, że po przewinięciu kilka razy jedna lub dwie komórki, które pasują do kryteriów przesunięcia początku komórki do 10 pikseli, mają zmienioną ramkę waitLabel
.
Proszę, możesz mi powiedzieć, dlaczego tak się dzieje i jak można to naprawić.
Gdzie umieściłeś ten kod? – Uby
-cellForRow .... –
Czy używasz automatycznego układu? – rdelmar