2011-10-10 15 views
14

Sono un principiante iOS. Ho un pulsante della barra di navigazione che, una volta cliccato, dovrebbe eseguire una mia funzione. Qual è il modo migliore per farlo?Aggiungi un selettore personalizzato a un UIBarButtonItem

UIBarButtonItem *doneBarButtonItem=[[UIBarButtonItem alloc] init]; 
[email protected]"Done"; 
self.navigationItem.rightBarButtonItem = doneBarButtonItem; 
[doneBarButtonItem release]; 

risposta

42

Un modo è quello di init con il target e l'azione:

UIBarButtonItem *buttonHello = [[UIBarButtonItem alloc] initWithTitle:@"Say Hello"  
    style:UIBarButtonItemStyleBordered target:self action:@selector(sayHello:)]; 

Un altro modo è quello di impostare la destinazione e l'azione dopo è stato creato

[buttonHello setTarget:self]; 
[buttonHello setAction:@selector(sayHello:)]; 

di destinazione è l'istanza di l'oggetto che verrà chiamato. Nel caso di sé, il metodo sarà su questa istanza dell'oggetto.

L'azione è il metodo che verrà chiamato. In genere, lo decorare con IBAction per suggerire al designer che si tratta di un'azione. Compilare per annullare.

- (IBAction)sayHello:(id)sender 
{ 
    // code here 
} 
+0

Grazie per '[buttonHello setTarget: self];' e '[buttonHello setAction: @selector (sayHello :)];' .... questo mi ha salvato !! – Greg

+0

Grazie per questa risposta splendidamente scritta, Bryan; c'è qualche possibilità di riscrivere il resto della documentazione dell'API di Apple in questo modo? ;-) – Slowburner

2

C'è una varietà di diverse chiamate di inizializzazione è possibile utilizzare, elencati nella sezione Metodi di istanza qui:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIBarButtonItem_Class/Reference/Reference.html

- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action 
- (id)initWithCustomView:(UIView *)customView 
- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 
- (id)initWithTitle:(NSString *)title style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action 

Inoltre, è possibile controllare un campione in uso qui :

How to set target and action for UIBarButtonItem at runtime

Spero che questo aiuti!

Problemi correlati