Domanda Segmento condizionale tramite Storyboard


Ho solo bisogno di sapere come fare un po 'di reindirizzamento' condizionale 'per una vista. Per esempio :

Se l'utente non ha ancora effettuato l'accesso, viene visualizzata una vista con il modulo di accesso. Ma se l'utente ha già effettuato l'accesso, vedrà la sua vista profilo.

Come rendere il condizionale come quello usando lo storyboard?

Grazie


44
2017-09-22 18:28


origine


risposte:


Per i segui condizionali, non iniziare un seguito da un pulsante come al solito. Invece di utilizzare i seguenti passaggi:

  1. Nel tuo storyboad, avvia un passaggio direttamente dal controller della vista sorgente al controller della vista di destinazione. Per fare ciò, è possibile trascinare l'icona del controller della vista di origine sulla barra appena sotto la vista del controller della vista di destinazione nell'area di disegno principale. Ricorda solo che devi connettere due controller di vista direttamente e non con alcun controllo.

  2. Immettere un identificatore di sequenza adatto per questo seguito. Per esempio dì "conditionSegue"

  3. Ora, nel file .m del controller della vista di origine, esegui le tue condizioni e chiama -performSegueWithIdentifier:sender: metodo su "self" come questo:

    -(void)loadDestinationVC{  
        if(condition == YES){  
    
           [self performSegueWithIdentifier:@"conditionSegue" sender:nil];  
        }  
    }
    

Spero di averlo chiarito.


70
2017-09-22 18:53



Credo che un approccio migliore se si desidera utilizzare segues da pulsanti sarebbe quello di utilizzare questo:

Prima crea un pulsante e usa un seguito per collegarlo a un'altra vista, dai un nome a questo seguito

quindi utilizzare questo metodo nel file .m

    - (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if ([identifier isEqualToString:@"SegueName"]) {
        //Check if should make the segue 
        //if not do something
        [self doSomething];
        //and return NO;
        return NO;
    }
    return YES;
    }

14
2018-04-15 01:32



In Swift puoi fare: come ha suggerito @Gaurav Singh nella sua risposta

Passaggio 1: inserire un seguito da ViewControllerA a ViewControllerB. Il seguito dovrebbe iniziare da ViewControllerA stesso e non da alcun controllo (come Button) in esso.

Passaggio 2: indica un identificatore univoco nello storyboard. Es: seageFromAtoB

Passo 3: Nel tuo ViewControllerforA.swift scrivi:

if(condition == true) {
    self.performSegueWithIdentifier("seageFromAtoB", sender: self)
}

Se stai eseguendo qualche compito in qualche altro Thread quindi usando performSegueWithIdentifier può fare un'eccezione

Se ottieni questo errore, dovresti usare:

if(condition==true){
      NSOperationQueue.mainQueue().addOperationWithBlock {
           self.performSegueWithIdentifier("seageFromAtoB", sender: self)
      }
}

Questo eseguirà il reindirizzamento dei successivi in ​​main Thread.

Spero che questo aiuto per qualcuno in cerca di opzione Swift


7
2018-01-03 10:35



Tu fai i segui direttamente da un controller a un altro (o altri) e dai loro identificatori. Nel codice che chiami scegli tra segues a seconda delle tue condizioni e chiama performSegueWithIdentifier: mittente :.


3
2017-09-22 18:35



Crea un seguito "generico" trascinando il ctrl dall'icona del controller della vista in basso alla destinazione. Questo seguito non sarà associato ad alcuna azione. Quindi, nel tuo codice in cui l'evento utilizza sempre il tuo codice condizionale che vuoi attivare il seguito, chiama:

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

1
2017-07-10 11:35