25 votes

Comment désactiver le bouton d'édition qui apparaît dans la section more d'un UITabBarController ?

Dans mon application (basée sur le modèle XCode Tab bar application), j'utilise un UITabBarController pour afficher une liste des différentes sections de l'application auxquelles l'utilisateur peut accéder.

Par défaut, le contrôleur UITabBarController affiche un bouton "Plus" dans la barre d'onglets lorsqu'il y a plus de 5 éléments. Il permet également à l'utilisateur de sélectionner les éléments qu'il souhaite voir apparaître dans la barre d'onglets.

Actuellement, je ne peux pas mettre en œuvre l'enregistrement et le chargement de l'état du contrôleur de la barre d'onglets, et je veux donc désactiver le bouton "Modifier".

Existe-t-il un moyen de désactiver/masquer le bouton de la barre "Edit" qui apparaît sur le contrôleur de navigation "More" de UITabBarController ?

J'ai essayé :

tabBarController.moreNavigationController.navigationBar.topItem.rightBarButtonItem = nil;

y

tabBarController.moreNavigationController.navigationBar.topItem.rightBarButtonItem.enabled = NO;

mais ils ne semblent pas fonctionner.

3voto

odyth Points 2016

@m4rkk & @lan terrell ce code ne fonctionne pas.

Je n'ai pas réussi à l'obtenir et j'ai donc désactivé la barre de navigation.

tabBarController.moreNavigationController.navigationBar.hidden = YES;

3voto

user2676172 Points 1

Cela peut se faire de la manière suivante. Ce n'est pas la solution la plus élégante, mais elle fonctionne™.

// Optional UITabBarControllerDelegate method
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [self performSelector:@selector(removeEdit) withObject:nil afterDelay:.0001];
}
- (void)removeEdit
{
    tabBarController.moreNavigationController.navigationBar.topItem.rightBarButtonItem = nil;   
}

3voto

Rob Points 2006

Je ne sais pas ce qu'il en est pour iOS4, mais il est important de mettre le code dans viewDidLoad vs viewWillAppear .

En d'autres termes, cela fonctionnera.

- (void)viewWillAppear:(BOOL)animated
{
self.customizableViewControllers = nil;
}

3voto

Eshwar Chaitanya Points 433

Il suffit d'ajouter une ligne de code dans la méthode du cycle de vie, c'est-à-dire lorsque l'application a fini de se lancer :

- (void)applicationDidFinishLaunching:(UIApplication *)application
{ 
    tabBarController.customizableViewControllers=nil;

}

2voto

Lee Points 20

Si vous utilisez NavigationController comme premier ViewController et que vous appuyez sur l'un des boutons pour entrer dans UITabBarController. Alors, en plus d'ajouter t

- (void)navigationController:(UINavigationController *)navigationController
        willShowViewController:(UIViewController *)viewController
        animated:(BOOL)animated 
{
    UINavigationBar *morenavbar = navigationController.navigationBar;
    UINavigationItem *morenavitem = morenavbar.topItem;
    /* We don't need Edit button in More screen. */
    morenavitem.rightBarButtonItem = nil;
}

y

if (self.selectedIndex >= 4) 
{
    self.customizableViewControllers = nil;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X