Ich habe ein paar (gruppierte) Tabellen in meiner iPhone-App (nur auf einem Teil des Bildschirms und hinzugefügt, Interface Builder
obwohl nicht untergeordnet UITableViewController
), die 80% der Zeit klein sind und auf den Bildschirm passen. Wenn die Tabelle auf den Bildschirm passt, möchte ich das Scrollen deaktivieren, um sie etwas sauberer zu machen. Wenn die Tabelle jedoch vom Bildschirm verschwindet (wenn später Zeilen hinzugefügt werden), möchte ich das Scrollen wieder aktivieren (da Sie diesen Inhalt sonst nicht sehen können.)
Gibt es eine Möglichkeit, dies zu tun? Ich kann es nicht herausfinden. Ich weiß zu tun:
tableView.scrollEnabled = NO;
Ich bin mir jedoch nicht sicher, wo oder ob ich die Tabellenobjektgröße oder etwas anderes berechnen muss, damit dies funktioniert.
Update : Hier ist die Lösung, die endlich für mich funktioniert hat:
if (table.contentSize.height < table.frame.size.height) {
table.scrollEnabled = NO;
}
else {
table.scrollEnabled = YES;
}
Ich führe diesen Code aus, nachdem ich reloadData
die Tabelle aufgerufen habe, und er berechnet die richtigen Größen und scheint zu funktionieren.
table.frame.size.height
ist die tatsächliche Größe des Objekts (Sie können dies in sehen Interface Builder
), die auf dem Bildschirm angezeigt wird, während table.contentSize.height
die Höhe von: Kopfzeile, Fußzeile und Höhe jeder Zelle zusammenaddiert wird.