In meiner iPhone App, um die zuvor angezeigte Registerkarte wiederherzustellen, setze ich beim Start den setSelectedIndex: (auch versucht, setSelectedViewController: wie in der Dokumentation, aber ohne Erfolg)
Dies funktioniert unter iPhone OS 3.0 - jedoch wird unter OS 2.x der ausgewählte Index größer als 3 (die ersten 4 Registerkarten) nicht auf die erforderliche Ansicht umgeschaltet. Dies wird von Apple hier dokumentiert: Ссылка
Ich frage mich, ob es möglich ist, zu einem View-Controller unter iPhone OS 2.x zu wechseln? Jede Hilfe wird geschätzt.
Btw auf meinem Simulator Einstellungsindex größer als 3 wirft einen Fehler (für iPhone OS 2.x) - also habe ich dies in einem @try {..} @catch (id ..) {} Block gehüllt - hoffe das Technik hilft jemandem.
Vielleicht wird das helfen. Was ich getan habe, war den Index des ausgewählten Tab-Bar-Elements zu speichern. Wenn die App gestartet wird, überprüfe ich, ob die Nummer größer als 3 ist. Wenn es der Fall ist, setze ich den ausgewählten Tab-View-Controller als den mehr Navigations-Controller und dann den gespeicherten Index-Tab-View-Controller von dem mehr Navigations-Controller.
%Vor%Ich arbeite an Version 2.
Mein Code sitzt hier und funktioniert wunderbar.
%Vor%Die UITabBarController-Dokumentation zu selectedIndex lautet:
Diese Eigenschaft repräsentiert nominell ein Index in das Array der
viewControllers
Eigenschaft. Allerdings, wenn der ausgewählte View-Controller ist derzeit die Mehr -Navigation Controller, enthält diese Eigenschaft die WertNSNotFound
. Dies einstellen Eigenschaft ändert die ausgewählte Ansicht Controller zu dem einen bei der designierter Index in derviewControllers
array. Um das zu wählen Mehr Navigation Controller selbst, Sie muss den Wert der ändernselectedViewController
Eigenschaft stattdessen.In Versionen von iPhone OS vor Version 3.0, spiegelt diese Eigenschaft wider Der Index des ausgewählten Tab-Listenelements only. Es wurde versucht, diesen Wert auf zu setzen ein Index eines View-Controllers, der ist nicht in der Tab-Leiste sichtbar, aber ist stattdessen verwaltet von der Mehr -Navigation Controller, hat keinen Effekt .
Wenn ich das richtig verstanden habe, müssen Sie stattdessen den Wert der selectedViewController -Eigenschaft ändern, aber Sie werden nur so weit gehen, den Mehr nav-Controller auszuwählen , kein VC in ihm. Aus den gleichen Dokumenten zu selectedViewController :
Dieser View-Controller ist derjenige, dessen Die benutzerdefinierte Ansicht wird derzeit von angezeigt die Tab-Leiste-Schnittstelle. Das angegebene View Controller muss in der sein
viewControllers
array. Zuweisen eines neuen Zeigen Sie den Controller für diese Eigenschaft an Ändert die aktuell angezeigte Ansicht und wählt auch eine entsprechende Registerkarte aus die Tableiste. Ändern der Ansicht Controller aktualisiert auch dieselectedIndex
Eigenschaft entsprechend. Der Standardwert dieser Eigenschaft istnil
.In iPhone OS 3.0 und höher können Sie Verwenden Sie diese Eigenschaft, um eines der folgenden Elemente auszuwählen View Controller in der viewControllers -Eigenschaft Dies enthält View-Controller, die sind verwaltet von der Mehr -Navigation Controller und dessen Tab-Leiste Elemente sind nicht in der Tab-Leiste sichtbar. Sie können Verwenden Sie es auch, um Mehr auszuwählen Navigation Controller selbst, was ist verfügbar von der moreNavigationController Eigenschaft. Vor iPhone OS 3.0 konnten Sie Wählen Sie nur die Navigation Mehr aus Controller und die Teilmenge der Ansicht Controller, deren Tab-Leiste-Element war sichtbar. Versuch, dies zu setzen Eigenschaft für einen View-Controller, dessen Registerkartenelement war nicht sichtbar hatte keine Wirkung.
Was eine Problemumgehung betrifft, frage ich mich, ob die Methode pushViewController:animated:
des More Nav-Controllers hier nützlich sein könnte? 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 die zuletzt aktive VC.
Wählen Sie zur Startzeit die entsprechende Ansicht in der Registerkarte Controller. Wenn das Tag der Ansicht nicht den VCs für die ersten vier Registerkartenelemente zugeordnet ist, muss es sich im Mehr -Nav-Controller befinden. Suchen Sie den VC, schieben Sie ihn auf den Stack des More nav Controllers und wählen Sie dann den More nav Controller aus.
Ich habe das nicht versucht, aber es könnte ein Experiment wert sein! Das einzige potentielle Problem (und es könnte ein großes Problem sein) ist, dass Sie VC drücken müssen, nachdem der Mehr nav Controller eingerichtet ist, nicht vorher.
Tags und Links objective-c iphone uinavigationcontroller uitabbarcontroller restore