web-dev-qa-db-fra.com

Ajout du bouton gauche à UINavigationBar (iPhone)

J'ai créé une nouvelle application iPhone basée sur la navigation. J'ai ajouté cela au RootViewController.

- (void)viewDidLoad {
    [super viewDidLoad];
    UIBarButtonItem *addButton = [[UIBarButtonItem alloc] init];
self.navigationItem.leftBarButtonItem = addButton;
self.navigationItem.leftBarButtonItem.enabled = YES;
}

Aucun bouton gauche ne s'affiche cependant. Y a-t-il quelque chose que je dois faire?

27
4thSpace

Vous ne définissez pas ce que fait réellement le bouton. Ceci est une ligne de mon application:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)];

cancelEdit:, le sélecteur, est dans la classe courante (self) et est défini comme:

- (void) cancelEdit: (id) sender;
54
Stephen Darlington

Il existe en fait une autre réponse, qui n'est pas répertoriée ici, mais qui pourrait être très utile dans de nombreux cas. Si vous ne voulez pas utiliser UINavigationController , alors self.navigationItem n'est pas une option pour vous.

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageName"] style:UIBarButtonItemStyleBordered target:self action:@selector(action:)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Bar Title"];
navigationItem.leftBarButtonItem = barButton;
[navigationBar pushNavigationItem:navigationItem animated:NO];

Vous voudrez peut-être cela lors de la création de UIViewController léger avec barre et boutons, mais vous ne voulez pas de surcharge de navigation.

14
Roman B.

Sur cette question:

Génial, merci. Où trouvez-vous les différents sélecteurs disponibles? Le doc est très vague à ce sujet. J'ai défini une méthode d'instance et l'ai mise comme sélecteur mais elle n'a jamais été exécutée. Je voudrais glisser dans une vue détaillée lorsque le bouton est cliqué. - 4thSpace 19 février à 16:19

Je vais à l'endroit où j'ai besoin de plus d'informations et j'appuie sur la touche d'échappement (Esc). Donc, dans cet exemple:

...(beginning of line)... @selector(Place Cursor Here, press Esc) ...

Une liste des sélecteurs disponibles apparaît. Pour les programmeurs Microsoft, c'est comme Intellisense, mais vous devez le demander avec Esc (il n'apparaît tout simplement pas automatiquement comme dans Visual Studio). En pratique, XCode crée la plupart de ce que vous essayez de créer lorsque vous commencez à taper et cela aide vraiment lorsque vous comprenez que la touche Tab est votre ami. (bien ... c'est mon ami ... ayant la vie solitaire que j'ai)

Maintenant, si vous avez besoin de votre propre sélecteur, vous pouvez y placer votre étiquette (mySelector: par exemple), puis, plus bas dans votre code, construisez-le:

- (IBAction)mySelector:(id)sender {
NSLog(@"You touched me THERE!");
}

Aussi, dans le fichier d'en-tête (.h), assurez-vous de mettre un correspondant:

-(IBAction) mySelector:(id)sender;

11
inked