2009-07-24 6 views
1

Est-ce possible?Plus d'un bouton sur le côté gauche d'une barre de navigation

J'ai un UINavigationBar que je voudrais avoir un bouton 'edit' à côté du bouton 'back'. D'après ce que j'ai lu, vous ne pouvez avoir que l'un ou l'autre, ce qui n'a aucun sens car ce sont des propriétés séparées de l'objet navigationItem (backBarButtonItem et leftBarButtonItem). Je suppose que vous devez insérer un UIView personnalisé dans le UINavigationBar Je regarde dans cette option et si aucune meilleure solution n'est donnée alors je vais décrire cette méthode.

Répondre

2

La réponse courte est:

Oui, vous devez ajouter vos propres vues UIButton (ou d'autres sous-classes UIControl) au contrôleur de navigation, vous. Donc, ignorez les propriétés personnalisées * ButtonItem et lancez-le vous-même.

Un peu plus impliqué réponse est:

d'Apple rend très facile à suivre leurs directives de HIG, mais vous êtes sur votre propre si vous voulez les briser ou personnaliser. Dans ce cas, un seul bouton est autorisé, car la zone de frappe réelle est plus grande que la taille du bouton affiché - beaucoup plus facile à atteindre du point de vue de l'utilisabilité.

Extraneous:

BTW, il y a une distinction subtile entre gauche/rightBarButtonItem et backBarButtonItem. left/right est spécifié sur le UIViewController en cours. Cependant retour est spécifié par le précédent UIViewController.

+0

Si je comprends bien, la boîte à boutons étant plus grande que le bouton est logique, mais qu'en est-il des boutons segmentés et autres? Apple le permet clairement dans leur UIG. – Brenden

+0

De mes souvenirs, si vous attachez manuellement votre propre bouton segmenté (disons, au centre du panneau de navigation), cela fonctionnera normalement. Cependant, je soupçonne que lorsque vous utilisez les propriétés du panneau de navigation pour attacher des boutons, Apple fait le hitTest: withEvent: appel répondre à une zone plus grande que la vue du bouton réel. – Kelvin

1

L'utilisation d'une vue personnalisée est en effet votre seule option ici. Le UINavigationBar n'est pas terriblement flexible. Ce que vous devez faire est de créer un UIView qui contient UIButtons. Assurez-vous que vous réalisez que si vous utilisez une vue personnalisée, vous gagnez none des comportements automatiques de la backBarButtonItem; vous devez créer vos propres IBActions, ainsi que les graphiques pour les boutons. Sur une note connexe, je ne suis pas sûr que ce soit la meilleure idée. Il est généralement sage de respecter les directives de l'interface utilisateur d'Apple; est-ce qu'il n'y a pas d'autre où vous pouvez mettre le bouton d'édition? Le côté droit de la barre, par exemple?

+0

La question est pour 2 boutons, modifier et importer. Ils affectent tous deux l'élément sélectionné. Je vais devoir considérer d'autres options pour l'importation. – Brenden

1

Alors que la réponse de @ Kelvin fonctionne pour iOS 5, si vous utilisez iOS 5+, il existe désormais une propriété de tableau leftBarButtonItems. Notez que vous devez également définir leftItemsSupplementBackButton sur true.

Questions connexes