2009-08-19 8 views
3

Ich benutze einen UINavigationController, um die Push und Pop von ViewControllern in meiner App zu behandeln. Es gibt einen Bereich, in dem ich eine Tab-Leiste habe (ohne UITabbarController), die von demselben UINavigationController verwaltet wird, ich füge einfach die UITabBar zur Ansicht der Navigations-Controller hinzu (mit addSubview). Das Problem: Das Problem: Ich habe einige UIViewControllers mit Tabellenansichten in den Navigations-Stack geschoben, da meine Tab-Leiste Teil der Ansicht ist und nicht der Navigations-Stack der TableViews am Hintern abgeschnitten werden, weil der Navigation Controller nicht kenne die Tab-Leiste, weil sie in ihrer Ansicht und nicht im Navigations-Stack ist. Ohne einen Navigationscontroller würde ich nur die ViewControllers-Ansicht ändern und es würde gut funktionieren, aber wenn ich das versuche, scheint es so, als ob der NavigationController meinen Frame einfach ignoriert und seine eigenen setzt und deshalb die Tabellenansichten abgeschnitten werden. Ich fand eine Lösung, die einige zusätzliche Zellen hinzufügen und sie verstecken sollte, und das funktioniert irgendwie OK, aber es ist eine Art Hacker, irgendjemand hat irgendwelche Vorschläge, wie man das auf eine andere nicht-hackere Art und Weise angehen könnte?Größe der ViewControllers Ansicht, die Teil eines UINavigationController auf IPhone sind

Dank

+0

ich weiß, ich bin irgendwie genervt, dass die Navigation Controller lassen Sie mich nicht die Größe seiner ViewControllers Ansichten .... – Daniel

+0

Können Sie einige Screenshots Ihres Problems zeigen? – Jonah

+0

Ich fand meine Antwort, danke Jonah ... der Bildschirm hätte wie ein Tableview und eine Tableiste ausgesehen und die Tableiste die letzten paar Zellen der Tabellenansicht (es würde nicht scrollen übergeben) – Daniel

Antwort

1

In Ordnung, so löste ich das Problem. Ich hatte versucht, die Größe der UITableView anstelle der ViewController zuvor, aber das hat nicht funktioniert. Ich erkannte aber, dass dies nicht funktionierte, weil ich einen UITableViewController benutzte, der sein eigenes tableView verwaltet und mich nicht den Rahmen davon ändern ließ (vielleicht änderte ich es an der falschen Stelle, probierte in viewDidLoad, ich wette, wenn ich habe es nach dem Aufruf zu [super viewDidload] hätte es geklappt ... na gut). Also habe ich die Klasse in einen UIViewController geändert und dort die Tabellenansicht verwaltet, jetzt funktioniert es gut, danke für die Antworten.

+0

Wie wäre es mit der unteren Symbolleiste? Kannst du es bewegen? – bentford

0

Versuchen die Wurzel eine UIView mit einer UITableView für ein Subview betrachten kann. Fügen Sie dann die UITabBar der UIView-Instanz hinzu. Jetzt wird UITableView nichts über den UINavigationController wissen.

+0

das ist nicht so schön, ich will meine Sicht Controller, um meine Tabellenansicht zu verwalten ... Ich habe nur meine Antwort gefunden, ich hatte das schon einmal versucht und nicht funktioniert, aber jetzt tut es, check it out – Daniel

+0

Ich habe es wahrscheinlich nicht so gut erklärt. Tatsächlich haben Sie jetzt eine UIViewController-Instanz für die Hauptansicht UND eine UITableViewController-Instanz für die Tabellensicht. Die UItableViewController-Instanz ist ein Ivar der UIViewController-Instanz. Dies funktioniert auch gut, um die Verantwortlichkeiten für das Verwalten der Tabelle und das Verwalten der UINavigationBar, das Laden von Untersichten usw. aufzuteilen. –

+0

Zufälligerweise ähnelt dies Ihrer aktuellen Lösung, mit dem zusätzlichen Vorteil, dass Sie weiterhin einen UITableViewController zum Verwalten Ihrer Tabelle verwenden. –

Verwandte Themen