Wenn Sie einen UITableViewController verwenden, erstellt die initWithStyle: -Methode automatisch das zugrunde liegende UITableView mit - laut der Dokumentation - "die richtigen Dimensionen".Verwenden eines UITableViewController mit einer kleinen Tabelle?
Mein Problem ist, dass diese "korrekten Abmessungen" 320x460 (die Bildschirmgröße des iPhone) scheinen, aber ich schiebe dieses TableView/Controller-Paar in einen UINavigationController, der selbst in einer UIView enthalten ist, die etwa die halbe Höhe hat des Bildschirms.
Kein Rahmen oder Grenzen Streiten Ich komme auf scheint scheint die Tabelle die Größe zurückgesetzt, und als solche ist es "zu lang", was bedeutet, es gibt eine Sammlung von Zeilen, die vom unteren Rand des Bildschirms geschoben werden und nicht sind sichtbar oder durch Scrollen erreichbar.
Also meine Frage kommt auf: Was ist die richtige Art und Weise zu einem UITableViewController zu sagen, die Größe seiner Komponente UITableView auf ein bestimmtes Rechteck zu ändern?
Danke!
aktualisieren Ich habe versucht, alle hier ohne Erfolg vorgeschlagen Techniken, aber ich habe eine interessante Sache finden: wenn ich eschew die insgesamt UINavigationController (was ich noch nicht bereit bin für die Produktion zu tun, sondern als Experiment), und fügen Sie die Tabellenansicht als direkte Unteransicht der einschließenden Ansicht, die ich erwähnte, die Rahmengröße gegeben wird respektiert. Die sehr Moment Ich führe den UINavigationController wieder in den Mix, egal ob es als Subview vor oder nach der Tabellenansicht hinzugefügt wird, und egal, ob es/vor oder nach der Tabellenansicht als Subview hinzugefügt wird Das Ergebnis ist das gleiche wie zuvor.
Ich fange an UINavigationController zu vermuten, ist nicht viel von einem Teamplayer ...
Update 2 Der Vorschlag Rahmengröße zu überprüfen, nachdem die Tabellenansicht auf dem Bildschirm ein gutes war: stellt sich heraus, dass Der Navigationscontroller ändert tatsächlich die Größe zwischen Laden und Anzeigen. Meine Lösung, bestenfalls Hacky, bestand darin, den gegebenen Frame beim Laden zwischenzuspeichern und ihn zurückzusetzen, wenn er am Anfang von tableView geändert wurde: cellForRowAtIndexPath :. Warum fragst du? Weil es der einzige Ort ist, den ich gefunden habe, der funktioniert hat, deshalb!
Ich halte dies nicht für eine Lösung, da es offensichtlich unpassend ist, aber zum Nutzen anderer Leser scheint es zu funktionieren.
einverstanden war, erstrecken sich nur UIViewController statt und Tableview Eigenschaft auf eigene Faust wie diese
@property (nonatomic, retain) UITableView \t *tableView;
– Zennichimaro