2013-07-17 12 views
5

All'interno del mio metodo di azione di svolgimento per il mio svolgimento, invio i dati a un database remoto e verifica se le informazioni sono state memorizzate correttamente nel database.iOS: una sequenza di svolgimento può essere interrotta utilizzando il codice all'interno del suo metodo di azione di svolgimento?

Ho intenzione di fare in modo che la mia funzione di verifica restituisca 0 o 1, in caso di esito positivo o negativo, e sto pensando di usarlo come condizione.

Sono curioso di sapere se esiste un modo per interrompere i passaggi di svolgimento all'interno del metodo di azione di svolgimento? (O dovrei semplicemente fare questa verifica prima che inizi il ciclo di svolgimento e impedire che la sequenza di svolgimento inizi?)

Ho già letto ios segue "cancel" ma non so cosa significano quando dicono di ignorare

-[UIViewController shouldPerformSegueWithIdentifier:sender:] 
metodo

. Devo solo creare la mia versione personalizzata di questo metodo (vedi sotto) e chiamarlo all'interno del metodo di azione unwind, e farlo ritornare no/yes a seconda delle mie condizioni? Ho provato l'override del metodo con:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender { 
    if (database verification fails) { 
     return NO; 
    } 
    return YES;    
} 

e ho chiamato dentro il mio metodo di azione di svolgimento, tuttavia non ha cancellato la segue rilassarsi.

Sto facendo qualcosa in modo non corretto, o c'è un altro modo per interrompere i seguiti di svolgimento all'interno del metodo di azione di svolgimento?

Sono nuovo per iOS, quindi mi dispiace se questa domanda sembra stupida. Grazie per qualsiasi aiuto!

+2

L'implementazione shouldPerformSegueWithIdentifier sembra ok, ma appartiene al controller da cui si sta passando, non al metodo di azione. – rdelmar

+0

Grazie a @rdelmar che ha funzionato! – giant91

risposta

2

Probabilmente sarebbe meglio se si controllasse semplicemente il risultato del proprio data base e poi si eseguisse il seguito. Il primo segmento di codice che hai postato non verrà modificato così tanto, ma se hai già fatto e lavorato il tuo svolgersi, l'unica cosa che vorresti aggiungere al tuo codice per controllare sarebbe qualcosa di simile (diciamo il tuo database restituisce YES e si fanno un NSString chiamato returnResult):

if ([returnResult isEqualToString:@"YES"]) 
{ 
    [self performSegueWithIdentifier:@"unwindSegueName" sender:self]; 

} 
else 
{ 
    //do whatever here if the value equals anything other than "YES" 
} 

tuo if varierà a seconda dei dati che si ottiene indietro dal database, ma si sarebbe comunque basta usare una pianura if condizionale.

FYI, la pubblicazione di più codice ti fornirà risposte più complete. Se hai pubblicato i dati di ritorno dal database, avrei potuto mostrarti come usarlo.

+0

questa risposta non è lo scopo originale. Il commento del post originale di rdelmar è corretto –