2010-10-11 12 views
0

J'ai un bouton de barre de navigation qui affiche à la fois l'image et le texte. Voici le code:Comment associer une méthode à ce bouton?

UIImage *saveImage = [UIImage imageNamed:@"star.png"]; 

UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

[saveButton setBackgroundImage:saveImage forState:UIControlStateNormal]; 
[saveButton setTitle:@"Save" forState:UIControlStateNormal]; 

saveButton.frame = (CGRect) { 
    .size.width = 100, 
    .size.height = 30, 
}; 

UIBarButtonItem *barButton= [[UIBarButtonItem alloc] initWithCustomView:saveButton]; 

[self.navigationItem setRightBarButtonItem:barButton animated:YES]; 

J'ai essayé

[barButton setAction:@selector(saveArray)]; 

mais il ne fonctionne pas.

Répondre

3

N'oubliez pas que vous devez également spécifier la cible. Vous pouvez définir une action/cible à l'objet lui-même UIButton:

[saveButton addTarget:target action:@selector(saveArray) forControlEvents:UIControlEventTouchUpInside]; 

J'ai essayé de mettre la cible/action à la UIBarButtonItem directement, mais il semble ne pas fonctionner en cas de UIButton pour une vue personnalisée pour une raison quelconque.

0

Vous souvenez-vous de définir la cible? Si la méthode souhaitée appartient à la même classe, vous pouvez faire:

[barButton setTarget:self]; 

Cela dit, action et target sont les deux propriétés (nouvelles à Obj-C 2.0), pensez à utiliser la notation de points:

barButton.action = @selector(saveArray:) 
barButton.target = self; 
+0

Cela compile sans erreur mais ne fonctionne toujours pas. –

Questions connexes