Frage

Ich habe in eine interessante Situation läuft, ich habe eine iPhone App mit 3 UITableViewControllers jeder Anzeige mehr oder weniger die gleichen Daten (kann man sagen, es ist eine Frage der Filterung). Bis heute hatte ich 3 separaten NIBs dafür, die jeweils mit einem eigenen Controller zusätzlich die UITableViewControllers innen UINavigationController im Interesse der Tasten oben waren.

Jetzt die App zu optimieren und reduzieren es Fußabdruck ist, ich auf eine gemeinsame Steuerung (ein UITableViewController) und links nur eine NIB in Stelle die ganze Logik packen. Die gemeinsame Steuerung kümmern würde, die Daten herausgefiltert werden, und weist auf die richtigen Daten.

Also, ich lade Sie die gleiche gemeinsame Steuerung bis 3 der Navigation-Controller:

navControllerA = [[UINavigationController alloc] initWithRootViewController: commonTableController];

und hinzugefügt, um diese Navigationscontroller zum UITabBarController:

navigationControllersArray = [NSArray arrayWithObjects: navControllerA, navControllerB, navControllerC, nil];
[tabController setViewControllers:[NSArray arrayWithArray:navigationControllersArray]];

Jetzt ist alles in Ordnung, die entsprechenden Registerkarten zeigen die Tabellenansichten auf. Aber sobald Sie das nächste UITabBarItem berühren und zum vorherigen zurück die UITableViewController nicht zeigen, können Sie nur einen UIWindow sehen in seinem Platz. Die UITableViewController sichtbar bleibt nur für die letzte berührt UITabBarItem.

Gibt es irgendeine Art von UITabBarview Lademechanismus ich nicht bewusst bin?

War es hilfreich?

Lösung

Jeder View-Controller kann nur auf einem Navigationscontroller Stack sein, und es kann an mehreren Stellen auf diesem Stapel nicht sein.

Wenn Sie wirklich Speicher speichern möchten, indem nur eine View-Controller verwenden, würde ich vorschlagen, dass stattdessen eine Tab-Leiste Controller verwenden, können Sie nur eine Tab-Leiste Ansicht verwenden und Ihr Root-View-Controller als Delegierter eingestellt. Der Wurzel-View-Controller würde dann direkt Tableiste Ereignisse interpretieren und seine Filter entsprechend ändern.

Andere Tipps

Wenn Sie wirklich auf einen Blick wechseln Datensätze wollen, scheint es wie ein besserer Ansatz wäre, eine Symbolleiste zu verwenden, anstatt ein Tab-Leiste. Die Tab-Leiste ist über die Ansichten wechseln, wo als das andere Plakat erwähnt, alle Ansichten haben Kinder einen Blick und einen Navigationscontroller sein. Mit einer Tab-Leiste, die in diesen einzigen Controller ruft gut auch wechseln Datensätze viel mehr Sinn machen, oder auch ein UISegmentedControl mit funktionieren würde (da Sie drei Elemente haben, und Sie können nur bis zu drei Segmenten).

Mit UITabBarController innerhalb UINavigationController wird nicht unterstützt. Sie können einen normalen UIViewController schreiben die UITabbbarController zu imitieren, die Stapel sehen geschoben werden kann. Sehen Sie diese SO Frage .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top