3

Dans l'application Cartes pour iPhone, une barre d'outils se trouve en bas de la vue cartographique (elle contient le contrôle du segment Recherche/Itinéraire et d'autres). Lorsque vous vous déplacez à partir de la vue cartographique en cliquant sur une légende, la barre d'outils disparaît avec la vue de la carte, laissant la vue suivante (un contrôleur de table) sans barre d'outils.Supprimer une barre d'outils lorsque vous appuyez sur une nouvelle vue

J'ai essayé de faire la même chose avec [self.navigationController setToolbarHidden:YES animated:YES] dans le deuxième contrôleur de vue, mais cela donne une étrange barre d'outils glisser vers le bas de l'animation, tandis que la vue de la carte glisse vers la gauche. L'utilisation de [self.navigationController setToolbarHidden:YES] en viewDidLoad provoque également un mauvais effet (elle fait disparaître la barre d'outils au moment où l'animation de démarrage commence, laissant un espace blanc laid).

Je suppose que la réponse à ceci est d'utiliser un fichier nib, mais je préférerais le faire par programmation (si possible).

Comment puis-je faire en sorte que la barre d'outils reste collée à la vue de la carte et que je la fasse glisser lorsque j'appuie sur un nouveau contrôleur de vue? Merci.

Gourmet Haus Staudt http://img.skitch.com/20100518-xfubyriig48d3ckaemjg2ay8q.jpg

Répondre

3

Il s'avère que la réponse est de créer directement la barre d'outils et de l'ajouter à la vue. C'est dans le code pour un UIViewController avec un UINavigationController. Les coordonnées du cadre peuvent changer en fonction de ce qui est à l'écran.

- (void)viewDidLoad 
{ 
    // Add a toolbar to the view 
    CGRect toolbarFrame = CGRectMake(0, 372, 320, 44); 
    UIToolbar *myToolbar = [[UIToolbar alloc] initWithFrame:toolbarFrame]; 

    UIBarButtonItem *compassButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"compass.png"] 
                     style:UIBarButtonItemStyleBordered 
                    target:self 
                    action:@selector(zoomToCurrentLocation)]; 

    compassButton.width = 30.0f; // make the button a square shape 
    [myToolbar setItems:[NSArray arrayWithObject:compassButton] animated:NO]; 
    [compassButton release]; 

    [self.view addSubview:myToolbar]; 
    [super viewDidLoad]; 
} 
0

Remplacer la méthode -viewWillAppear: du second contrôleur de vue de cacher la barre d'outils.

+0

Merci pour la réponse. J'ai eu une erreur ci-dessus, j'utilisais '-viewDidLoad', pas' -viewDidLoad: animated' (qui n'existe pas). Masquer la barre d'outils dans '-viewWillAppear: animated' a le même effet, soit masquer immédiatement la barre d'outils, soit faire glisser l'animation tout en poussant le contrôleur de vue. –

1

J'étais là pour une journée. Vraiment ne pas obtenir la réponse par programme, mais la meilleure façon de se comporter correctement, est de faire l'interface dans le constructeur de l'interface. Si vous définissez des éléments pour une barre d'outils dans votre code comme: [self.navigationController setToolbarItems: control1, control2, ..., nil] animé: NO]; Avec ma petite expérience, je peux dire que vous dites à toute l'application d'avoir une barre d'outils présente lorsque vous poussez de nouvelles vues à moins que vous ne le cachiez (ou que vous utilisiez un tabBar), mais en le cachant vous obtenez ces indésirables effets.

Vous pouvez essayer ceci:

[self.navigationController setToolbarHidden: OUI animée: OUI];

dans votre premier contrôleur - (void) viewWillDisappear: (BOOL) méthode animée, et le paramètre caché à NO dans - (void) viewWillAppear: (BOOL) méthode animée dans le premier contrôleur aussi.

Espérons que cela aide. PS: Et si vous obtenez la réponse par programme, faites le moi savoir! = P

+0

Salut Omer.Je ne comprends pas complètement les contrôleurs de vue, donc j'aime faire tout en code pour apprendre. Ce que vous avez dit à propos de l'ensemble de l'application ayant la barre d'outils est correct, car il est attaché au contrôleur de navigation. Votre réponse m'a donné l'indice dont j'avais besoin. J'ai créé moi-même la barre d'outils et l'ai ajoutée en tant que sous-vue. Merci pour l'aide. J'ai posté le code comme une réponse. –

Questions connexes