Die UITabBarController docs über selectedIndex es buchstabieren:
Diese Eigenschaft stellt nominell einen Index in das Array der viewControllers
Eigenschaft. Allerdings wenn der ausgewählte View-Controller ist derzeit die Mehr Navigation Controller Diese Eigenschaft enthält den Wert NSNotFound
. Wenn Sie diese -Eigenschaft einstellen, wird die ausgewählte Ansicht -Steuerung in den mit gekennzeichneten Index im viewControllers
Array geändert. Um den Mehr Navigationscontroller selbst auszuwählen, müssen Sie stattdessen den Wert der selectedViewController
Eigenschaft ändern.
In Versionen von iPhone OS vor Version 3.0 spiegelt diese Eigenschaft der Index der nur Artikel Tab-Leiste ausgewählt. Der Versuch, diesen Wert auf einen Index einer View-Controller einzustellen, die nicht sichtbar in der Tab-Leiste ist, sondern stattdessen durch den Mehr Navigation Controller verwaltet, hat keine Wirkung.
Wenn ich richtig verstehe, müssen Sie stattdessen auf „den Wert der selectedViewController Eigenschaft ändern“, aber Sie werden nur so weit, wie die Auswahl des Mehr nav-Controller, kein VC innerhalb es. Aus den gleichen Dokumenten in Bezug auf selectedViewController:
Dieser View-Controller ist derjenige, deren benutzerdefinierte Ansicht derzeit von die Tableiste Schnittstelle angezeigt wird.Der angegebene View Controller muss sich im Array viewControllers
befinden. Das Zuweisen eines neuen View-Controllers zu dieser Eigenschaft ändert die aktuell angezeigte Ansicht und wählt auch eine entsprechende Registerkarte in der Registerkartenleiste aus. Das Ändern der Ansicht Controller aktualisiert auch die Eigenschaft entsprechend. Der Standardwert dieser Eigenschaft ist nil
.
In iPhone OS 3.0 und höher können Sie mit dieser Eigenschaft in dem Viewcontrollers Eigenschaft eine der View-Controller auszuwählen. Dieser enthält View-Controller, die verwaltet werden, durch die Weitere Navigation Controller und deren Tab-Leiste Elemente sind nicht in der Tab-Leiste sichtbar. Sie können verwenden sie auch die Mehr Navigation Controller selbst zu wählen, die erhältlich von der moreNavigationController Eigenschaft ist. Vor iPhone OS 3.0, könnten Sie wählen Sie nur die Mehr Navigation Controller und die Teilmenge der Ansicht Controller, dessen Element Tableiste war sichtbar. Der Versuch, diese -Eigenschaft auf einen Ansichtscontroller zu setzen, dessen Registerkartenelement nicht sichtbar war, hatte keinen Effekt.
Wie für dieses Problem zu umgehen, frage ich mich, wenn die Mehr nav der Steuerung pushViewController:animated:
Methode hier würde sich als nützlich? Geben Sie jeder Ansicht eine eindeutige Tag-Nummer (die Sie hinter den Kulissen einer entsprechenden VC zuordnen können). Speichern Sie das Tag für den zuletzt aktiven VC.
Wählen Sie zur Startzeit die entsprechende Ansicht in der Registerkarte Controller aus. Wenn das Tag der Ansicht den VCs für die ersten vier Registerkartenelemente nicht zugeordnet ist, muss es innerhalb des More Nav-Controllers liegen. Suchen Sie den VC, schieben Sie ihn auf den More Stack des Nav-Controllers und wählen Sie dann den More nav Controller outright.
Ich habe das nicht versucht, aber es könnte ein Experiment wert sein! Das einzige potentielle Gotcha (und es könnte ein biggie sein) ist, dass Sie müssen das VC nach die Weitere Nav-Controller ist Setup, nicht vorher.
ja, die selectedIndex-Eigenschaft funktioniert in iPhone OS 2.x, aber es funktioniert nicht, wenn der Index größer ist als 3. Mein iPhone App über 12 Registerkarten. –