2011-11-19 13 views
12

Sto progettando un'applicazione iOS utilizzando la funzione storyboard di XCode 4.2. L'app ha una schermata di login che accetta nome utente e password e ha un pulsante per accedere. Se si preme il pulsante di accesso, si attiva una pressione eccessiva su un altro controller di visualizzazione. Tuttavia, voglio che il sequela di aspettare fino a quando il login torna successo prima di procedere al controller di visualizzazione successivo.iOS: Rendi seguito attendere il successo di login

So di prepareForSegue:sender: ma il mio problema è il seguente: la chiamata di accesso è asincrona. Pertanto non posso eseguire il login lì.

C'è qualche modo per aggirare questo? Posso creare un seque nello storyboard che viene attivato solo quando lo desidero (al contrario di quando si fa clic su un pulsante)?

risposta

37

Ok, l'ho capito. Avevo definito un seguito da un UIButton al successivo UIViewController. Come definito in questo modo, non c'è modo di eseguire condizionatamente il seguito.

Invece di mettere il seguito sul pulsante, ho eseguito un passaggio dal primo UIViewController all'altro UIViewController. Questo definisce il seguito, ma non associa alcuna azione con esso. Da lì posso semplicemente chiamare performSegueWithIdentifier:sender: quando voglio eseguire quel seguito (nel mio caso quando l'attività asincrona è completa).

Il principale vantaggio di questo è che IB mantiene la sua struttura.

Grazie mille a @cli_hlt per avermi indirizzato nella giusta direzione (+1).

5

Non so se c'è un modo in IB per eseguire tale azione (anche se dubito fortemente) in modo suggerisco di usare

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender 

sul controller della vista quando il asincrona successo i segnali d'accesso .

+0

Sì, l'ho visto, speravo solo che ci fosse un modo per farlo dove non avrei dovuto interrompere il flusso in IB. – mtmurdock

1

È inoltre possibile chiamare instantiateViewControllerWithIdentifier su un'istanza di UIStoryBoard. Ciò restituirà un riferimento al controller di visualizzazione in qualsiasi punto dello storyboard. Da lì, puoi presentarlo come preferisci e raccoglierà il flusso del tuo storyboard.

+0

Questo non si presenterebbe in IB però. Stavo cercando di mantenere il diagramma di flusso sullo storyboard. Quello che stai suggerendo non mostrerebbe un collegamento tra i due controller in IB. Se leggi la mia risposta vedrai come sono stato in grado di fare essenzialmente la stessa cosa che stai proponendo mentre usi IB per definire il seguito. Grazie per l'input! +1 – mtmurdock

Problemi correlati