Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 18 di 32
  • livello intermedio
Indice lezioni

La creazione dei pulsanti in un'applicazione iOS 

L'uso di UIButton, l'oggetto di programmazione iOS che intercetta i tocchi degli utenti e ne esegue le azioni.
L'uso di UIButton, l'oggetto di programmazione iOS che intercetta i tocchi degli utenti e ne esegue le azioni.
Link copiato negli appunti

In questa lezione andremo ad introdurre uno degli oggetti più utilizzati nello sviluppo di applicazioni iOS: l'UIButtonn. Questo elemento ha il preciso compito di intercettare i diversi tipi di eventi di tocco dell'utente ed eventualmente richiamare diversi metodi per ogni tipologia di evento ricevuto..

Passiamo adesso all'implementazione di tali oggetti all'interno del nostro progetto. Portiamoci nel filee InsertViewController.hhe dichiariamo due bottoni come attributi di classe nel seguente modo::

UIButtonn*_resetButton;
UIButtonn*_addButton;

Portiamoci adesso nel filee InsertViewController.mme nel solito metodo di init (dopo la dichiarazione dellaa TextViewwche abbiamo visto nella precedente lezione) andiamo ad inserire il seguente codice::

_resetButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_resetButton.frame = CGRectMake(10, 370, 140, 30);
[_resetButton setTitle:@"Reset" forState:UIControlStateNormal];
[_resetButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:_resetButton];
_addButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_addButton.frame = CGRectMake(160, 370, 140, 30);
[_addButton setTitle:@"Inserisci" forState:UIControlStateNormal];
[_addButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[self.view addSubview:_addButton];

Come possiamo vedere, la dichiarazionee è diversa dalle altre dichiarazioni che abbiamo incontrato fino ad ora. Qesto perchè la classee UIButton ci mette a disposizione il metodo di classe buttonWithType che consente di specificare il tipo di bottone ottenendo, con poco sforzo, un oggetto graficamente gradevole. Se avessimo usato gli usuali metodi di allocazione e inizializzazionee allocc e init avremo dovuto effettuare un po' più di lavoro per avere una resa grafica del bottone migliore.

Continuando con l'analisi del codice, nella linea successiva, viene impostato il frame dei bottoni e viene impostato il titolo (che è la scritta presente sopra il bottone) ed il colore del testo del bottone quando quest'ultimo si trova nello stato UIControlStateNormal (che rappresenta lo stato in cui si trova il bottone quando non riceve eventi di tocco).

Effettuando un Run del progetto vedremo i bottoni posizionati correttamente nella parte bassa dello schermo, ma toccandoli non accadrà niente. Questo è ovvio perchèè non abbiamo associato a tali bottoni nessun metodo in risposta ad un evento di tocco.

Quindi, la prima cosa da fare è dichiarare due metodi nel file InsertViewController.h: uno da associare al _resetButton e uno all'_addButton. Inseriamo dunque il seguente codice dopo la dichiarazione degli attributi della classe:

-(void)addButtonTapped;
-(void)resetButtonTapped;

A questo punto andiamo ad implementare tali metodi all'interno della classe InsertViewController.m:

- (void)addButtonTapped{
    NSLog(@"Button TAPPED !!");
}
- (void)resetButtonTapped{
    _originTextField.text = @"";
    _nameTextField.text = @"";
    _descriptionTextView.text = @"";
}

Sui metodi non c'è da dire molto: nel metodo da associare all'_addButton per adesso mettiamo solo una stampa sulla console (in un secondo momento salveremo un nuovo oggetto da inserire nella lista), mentre nel metodo da associare al _resetButton semplicemente inseriamo una stringa vuota nei due TextField e nella TextView.

A questo punto non ci resta che associare tali metodi ai bottoni. Sempre nella classe InsertViewController.m e dopo la definizione del frame dei bottoni aggiungiamo rispettivamente:

[_resetButton addTarget:self action:@selector(resetButtonTapped) forControlEvents:UIControlEventTouchUpInside];
[_addButton addTarget:self action:@selector(addButtonTapped) forControlEvents:UIControlEventTouchUpInside];

Il metodo utilizzato consta di tre parametri che analizziamo singolarmente:

  • addTarget: rappresenta l'oggetto target a cui il bottone invierà il messaggio in seguito alla ricezione di un evento di tocco (nel nostro caso la classe InsertViewController).
  • action: rappresenta il metodo che deve essere invocato dopo la ricezione dell'evento di tocco. Per far ciò usiamo il costrutto @selector che serve a richiamare un metodo appartenente ad una classe.
  • forControlEvent: rappresenta il tipo di evento di tocco. Nel nostro caso abbiamo scelto l'evento UIControlEventTouchUpInside che rappresenta l'evento di tocco associato alla pressione del bottone e rilascio sempre all'interno dell'area del bottone. Nulla vieta al lettore di definire altri metodi da associare al bottone per diversi tipi di evento.che rappresenta l'evento di tocco associato alla pressione del bottone e rilascio sempre all'interno dell'area del bottone. Nulla vieta al lettore di definire altri metodi da associare al bottone per diversi tipi di evento.

Ti consigliamo anche