2015-12-13 16 views
7

aggiungo una UIButton di programmazione, e voglio chiamare un metodo quando si preme su di esso, non sono sicuro di come progettare un tale modello:Come creare un evento per UIButton in ViewController?

  1. dove dovrei mettere gestore di eventi, o metodo di azione? in vista controller o vista stessa.

  2. Se metto il metodo in visualizzazione controller, come posso manipolare lo SubViews della Vista nel metodo? devo esporre tutto il SubViews (UIButton, ecc.) al controller inserendoli nel file di intestazione della vista come proprietà? In realtà questa domanda è invitato in questo modo: Come posso implementare da codice che SubViews in una vista sono associati a un IBOutlet proprietà di Interface Builder ...

+0

la proprietà può essere accessibile da tutte le sottoview in un controller di visualizzazione. È possibile creare un punto di ibaction per gestire l'evento del pulsante o aggiungere il proprio metodo di destinazione !!! –

risposta

8

controllare questo link per le basi della gerarchia vista iOS : Getting started with iOS Views e comprendere la seguente schema (crediti techrepublic.com):

Credits: http://www.techrepublic.com/

programmazione:

// Create your button wherever you wish (below is example button) 
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = CGRectMake(0.0, 0.0, 320, 450); 
[myButton setTitle:@"Yay" forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(didTouchUp:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:myButton]; 

// This method will be called when touch up is made on the button 
- (void)didTouchUp:(UIButton *)sender { 
    NSLog(@"Button Pressed!"); 
} 

Spiegazione:

[myButton addTarget:self action:@selector(didTouchUp:) forControlEvents:UIControlEventTouchUpInside]; 
  • myButton - la vostra vista pulsante
  • addTarget - il target in cui il metodo esiste in
  • azione - il selettore che si desidera chiamare
  • forControlEvents - evento di controllo l'utente dovrà fare per attivare questa azione

Uso storyboard:

enter image description here

  • (A) Assicurarsi che lo storyboard è corrispondente alla classe corretta
  • (B) Trascina UIButton dalla libreria degli oggetti nello storyboard

Quindi annuncio d per il file ViewController.h:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIButton *myButton; 

- (IBAction)didTouchUp:(id)sender; 

@end 

Quindi aggiungere al ViewController.m di file:

- (IBAction)didTouchUp:(id)sender { 
    NSLog(@"Button Pressed!"); 
} 

Infine, creare il collegamento tra l'UIButton e IBAction:

enter image description here

  • (A) Fare clic destro sul pulsante Visualizza
  • (B) tocco di resistenza su azione per la vista pulsante sullo storyboard
  • (C) Premere su didTouchUp:

Questo è il flusso molto di base per fare un passo del genere ... si potrebbe desiderare di spendere le vostre abilità leggendo la seguente:

+1

Eccellente aiuto che hai fatto, amico! –

+0

@AlanHoo è un piacere! Se ti ha aiutato, per favore segna la mia risposta come quella giusta. Grazie tante! –

+1

Contrassegnato ... grazie ... –

Problemi correlati