8
votes

Uitabbarcontroller: passez à un contrôleur d'affichage différent Programmatiquement

Dans mon iPhone App, pour restaurer l'onglet Visualisé précédemment, sur Lancement I Définissez le SEselectedindex: (également essayé SEstSelectedViewController: selon DOCS mais en vain)

Ceci fonctionne sur iPhone OS 3.0 - Toutefois, sur OS 2.x, l'index sélectionné supérieur à 3 (les 4 premiers onglets) ne permet pas de passer à la vue souhaitée. Ceci est documenté par Apple ici: http://developer.apple.com/iphone/library/documentation/uikit/reeference/itabbarcontroller_class/reference/reference.html#//apple_ref/occ/instp/itabbarcontroller/SelectedViewController

Je vous demande si il est possible de passer à un contrôleur d'affichage sous iPhone OS 2.x? Toute aide est appréciée.

BTW sur mon index de réglage de simulateur supérieur à 3 jette une erreur (pour iPhone OS 2.x) - donc j'ai enveloppé cela dans un @. ..} @catch (id ..) {} block - espère que cela Technique aide quelqu'un.


0 commentaires

3 Réponses :


2
votes

J'ai ce travail sur la version 2.

Mon code est assis ici et travaille bien. P>

- (void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

[application setStatusBarStyle:UIStatusBarStyleBlackOpaque];
[window addSubview:tabBarController.view];
// Settings getLastViewIndex is just, 0,1,2,3 depending on what it was last set.
tabBarController.selectedIndex = [Settings getLastViewIndex];


1 commentaires

Oui, la définition de la propriété sélectionnée fonctionne dans iPhone OS 2.x, mais cela ne fonctionne pas si l'index est supérieur à 3. Mon iPhone APP possède plus de 12 onglets.



2
votes

Les DOCS UITABBARCONTROLLER CONCERNANT SELECTECTELLEDEX Sortez-le:

Cette propriété représente nominalement un indice dans le tableau de la ViewControlers Propriété. Cependant, si Le contrôleur d'affichage sélectionné est Actuellement, la navigation plus contrôleur, cette propriété contient le Valeur nsnotfound . Définir ceci La propriété change la vue sélectionnée contrôleur à celui de la Index désigné dans le ViewControlers Array. Pour sélectionner le plus contrôleur de navigation elle-même, vous doit changer la valeur de la SélectionnéViewController Propriété à la place.

dans les versions de iPhone OS avant version 3.0, cette propriété reflète L'index de l'élément de barre d'onglet sélectionné seulement. tenter de définir cette valeur à un index d'un contrôleur d'affichage qui est pas visible dans la barre d'onglets, mais est plutôt géré par la navigation plus contrôleur, n'a aucun effet .

Si je comprends correctement, vous devez "modifier la valeur de la propriété SELECTEVIEWCONTROLLER PROPRIÉTÉ", mais vous n'obtirez que pour la sélection du contrôleur de navigateur plus , pas un VC en elle. Des mêmes documents concernant SelectedviewController :

Ce contrôleur de vue est celui dont La vue personnalisée est actuellement affichée par l'interface de la barre d'onglets. Le spécifié Le contrôleur de vue doit être dans le ViewControlers Array. Affectation d'un nouveau Voir le contrôleur à cette propriété Modifie la vue actuellement affichée et sélectionne également un onglet approprié dans la barre d'onglets. Changer la vue contrôleur met également à jour le sélectionnée Propriété en conséquence. La valeur par défaut de cette propriété est nil .

dans iPhone OS 3.0 et plus tard, vous pouvez Utilisez cette propriété pour sélectionner n'importe lequel des Voir les contrôleurs dans le ViewControlers Propriété. Cette Comprend les contrôleurs de vue qui sont géré par la navigation plus contrôleur et dont les éléments de barre d'onglets sont pas visible dans la barre d'onglets. Vous pouvez Utilisez-le également pour sélectionner la plus contrôleur de navigation elle-même, qui est Disponible à partir de la MorenavigationController Propriété. avant l'iPhone OS 3.0, vous pourriez Sélectionnez uniquement la navigation plus contrôleur et le sous-ensemble de la vue contrôleurs dont l'élément de barre d'onglets était visible. Tenter de définir cette propriété à un contrôleur d'affichage dont onglet élément de la barre n'a pas été visible avait pas effet.

En ce qui concerne une solution de contournement, je me demande si le Plus nav du contrôleur pushViewController: animé: serait utile ici? Donnez à chaque vue un numéro de étiquette unique (que vous pouvez associer à un VC approprié dans les coulisses). Enregistrer l'étiquette pour VC selon la dernière active.

Au démarrage du temps, sélectionnez la vue appropriée dans le contrôleur de barre d'onglets. Si l'étiquette de la vue n'est pas associé aux VCs pour les quatre premiers éléments de l'onglet, il doit être dans le contrôleur Plus nav. Localisez le VC, pousser sur le Plus nav la pile du contrôleur, puis sélectionnez Plus contrôleur nav pur et simple.

Je n'ai pas essayé, mais il pourrait être utile d'une expérience! Gotcha que le potentiel (et il pourrait être un trop grave) est que vous devrez pousser que VC après Plus contrôleur nav est configuré, pas avant.


1 commentaires

Cette explication a beaucoup aidé. Il vous suffit de définir la sélection de SELECTIDEX ne fonctionne pas si le NON des onglets est supérieur à 5 et si le fichier sélectionné est> 5, mais le réglage de la sélection de fichiers sur la vue ContentryController fonctionne comme un charme.



7
votes

Peut-être que cela aidera. Ce que j'ai fait était d'enregistrer l'index de l'élément de barre d'onglets sélectionné. Lorsque l'application lance, je vérifie si le numéro est supérieur à 3, si c'est je défini le contrôleur de la barre d'onglets sélectionné pour être le contrôleur de navigation, puis appuyez simplement sur l'onglet d'index sauvegardé de la barre de la barrière de la barre de la barre de navigation. xxx


2 commentaires

Cela fonctionne bien. Que se passe-t-il lorsque vous définissez SELECTEDex est que le plus contrôleur est utilisé à la place du contrôleur de navigation d'origine, puis retournez dynamiquement. Ce code obtient le donation initiale de configuration et garantit que le pointeur de navigation de contrôle du contrôleur d'affichage est correct.


Hmm. Cela fonctionne bien avec un problème: le bouton d'édition sur l'écran de plus a disparu.