2010-10-26 2 views
1

J'ai un UITabBarController qui a été créé par programmation. Il y a 6 onglets dans la barre d'onglets qui ont forcé un autre bouton à apparaître, ce qui est super et fonctionne magnifiquement! Pendant le test de l'application, l'un des testeurs a soulevé un point. Quand ils sélectionnent le bouton plus, puis sélectionnez l'une des options dans le menu plus, la vue résultante est présentée comme prévu. Si elles sélectionnent alors un autre onglet de la barre d'onglets et retournent ensuite à l'onglet plus, la vue qu'elles ont précédemment sélectionnée est toujours visible!Comment faire pour que le bouton "more" d'un UITabBarController retourne à la vue racine

Donc, ma question est la suivante. Comment puis-je faire revenir le bouton "more" au menu de la table quand il est sélectionné? J'ai essayé l'évidence, car il semble être une sous-classe de UINavigationController que j'ai essayé de sauter à la racine etc mais en vain ... L'application iPod fait exactement ce que je veux faire, je sais que c'est possible, je me demandais s'il y a quelque chose qui me manque?

Toute aide est appréciée

Graham Whitehouse

Répondre

1

Essayez cette méthode déléguée:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    if ([tabBarController selectedIndex] > 3) { 
     [viewController.navigationController popToRootViewControllerAnimated:NO]; 
    } 
} 
+0

Salut Matt, merci pour la réponse mais il ne fonctionnait pas ... Je l'avais essayé le popToRootViewController appel au sein du délégué précédemment en vain! Il semble que plus le bouton crée une version sous-classée de UINavigationController, quand vous regardez le type de données de viewController dans la méthode déléguée, il est défini comme UIMoreNavigationController. Je devine que c'est quelque chose là qui me permettra de faire ce que je veux faire ... –

+0

Graham, j'ai essayé cela dans mon application car j'ai besoin de faire une chose similaire et ça a marché pour moi. 'UIMoreNavigationController' est une classe privée donc il n'y a rien de plus à moins que vous ne vouliez risquer la police de l'API. 'UIMoreNavigationController' étend' UINavigationController' donc vous devriez pouvoir appeler 'popToRootViewControllerAnimated:' dessus. Est-ce que ça ne saute pas ou est-ce que ça plante? Quelle version du SDK construisez-vous contre? –

Questions connexes