2012-08-25 14 views
5

Devo premere un nuovo carattere quando si preme un pulsante. Ma ho anche una azione ad essa collegata che deve essere attivata prima che venga eseguito il push.Azione pulsante separata e azione successiva

Puoi dirmi come separarli gli uni dagli altri? Qualsiasi aiuto sarebbe apprezzato.

risposta

13

Effettuare il passaggio direttamente da un controller di visualizzazione all'altro invece di collegarlo al pulsante. Dagli un nome significativo.

Quindi, nel metodo di azione del pulsante, eseguire prima tutto ciò che è necessario fare, quindi eseguire il seguito utilizzando il metodo performSegueWithIdentifier: del controller di visualizzazione, utilizzando il nome significativo scelto in precedenza.

Dai tuoi commenti, sembra che tu stia cercando di impostare le proprietà sul controller di visualizzazione che sta per apparire dai tuoi passi. In questo caso, è necessario implementare prepareForSegue: e utilizzare segue.destinationViewController per ottenere un puntatore al controller della vista che sta per apparire.

+0

Grazie per l'aiuto. Ho provato a fare quello che hai detto, ma comunque la vista viene prima spinta e l'azione viene eseguita dopo. Ecco il codice che sto utilizzando - 'Codice delle - (IBAction) searchButtonPressed: (id) {sender ViewController * viewController = [[ViewController alloc] initWithnibName: @ fascio "ViewController": nil]; viewController.query = [NSString stringWithFormat: @ "% @", search.text]; [self performSegueWithIdentifier: @ "search" mittente: self]; [viewController release]; } 'codice' –

+0

Bene, questo non funzionerà! Quando viene eseguito il seguito, il sistema operativo crea un nuovo controller di visualizzazione per te, quindi quello che hai creato nel tuo codice non fa nulla. A me sembra che dovresti impostare queste proprietà in 'prepareForSegue:' al suo posto. – jrturton

+0

Ho implementato entrambe le soluzioni che hai detto. Le cose sembrano andar bene, ma ora l'app si sta bloccando. Ho provato ad aggiungere questo - - (IBAction) searchButtonPressed: (id) mittente { [self performSegueWithIdentifier: @ "search" mittente: mittente]; } - (void) prepareForSegue: (UIStoryboardSegue *) segue mittente: (id) {sender if ([segue.identifier isEqualToString: @ "ricerca"]) { ViewController * viewController = [segue destinationViewController]; viewController.query = [NSString stringWithFormat: @ "% @", search.text]; [viewController release]; } } –

Problemi correlati