Mam kilka (pogrupowanych stylów) tabel w mojej aplikacji na iPhone'a (tylko na części ekranu i dodałem, Interface Builder
ale nie podklasę od UITableViewController
), że 80% czasu jest małe i zmieści się na ekranie. Gdy stół zmieści się na ekranie, chciałbym wyłączyć przewijanie, aby było trochę czystsze. Ale jeśli tabela zejdzie z ekranu (gdy zostaną do niej później dodane wiersze), chciałbym ponownie włączyć przewijanie (ponieważ w przeciwnym razie nie zobaczysz tej zawartości).
Czy jest na to sposób? Nie mogę tego rozgryźć. Wiem, że muszę:
tableView.scrollEnabled = NO;
ale nie jestem pewien, gdzie, ani czy muszę obliczyć rozmiar obiektu tabeli lub coś, aby to zadziałało.
Aktualizacja : Oto rozwiązanie, które w końcu dla mnie zadziałało:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Uruchamiam ten kod po wywołaniu reloadData
na stole, a on oblicza odpowiednie rozmiary i wydaje się działać.
table.frame.size.height
to rzeczywisty rozmiar obiektu (można to zobaczyć Interface Builder
) wyświetlany na ekranie, natomiast table.contentSize.height
wysokości: nagłówek, stopka i wysokość każdej komórki zsumowane.