2017-07-03 4 views
0

Ich bin neu in iOS. Ich habe eine sehr ähnliche Anforderung wie mein Android-Projekt. Die Anforderung ist, dass ich in meiner LoginActivity onCreate() nach einer Bedingung suche und wenn es wahr ist, starte ich meine nächste Aktivität mit einem Intent.Führen Sie Segue aus viewDidLoad()

Ich versuche, die gleiche Funktionalität aus meiner iOS-App zu machen. In meinem LoginViewController viewDidLoad(), nach dem Überprüfen einer Bedingung, rufe ich [self performSegueWithIdentifier:@"myNextControllerSegue" sender:nil];.

Aber mein ViewController wechselt nicht zum nächsten View-Controller. Jede Hilfe wäre willkommen.

+0

rufen Sie segue im Hauptthread oder verschieben, um viewdidappear oder viewwillappear –

+1

stellen Sie sicher, dass Sie den Abschnitt in 'Storyboard' mit dem gleichen Namen' myNextControllerSegue' konfiguriert. –

+0

@ Anbu.Karthik hat es nicht funktioniert, wenn ich es in ViewWillAppear() aufrufen. Wenn ich die Logik nach viewDidAppear() verschiebe, funktioniert es, aber ich sehe ein Flackern, wo ich auch meine Login-Benutzeroberfläche sehen kann. Wie man dieses Flimmern vermeidet? –

Antwort

0

Sie müssen den Übergang an der richtigen Stelle durchführen. Es wird versucht, eine andere Ansicht vor der ersten in der Hierarchie zu laden. Wenn viewDidAppear aufgerufen wird, haben Sie eine vollständig zu ändernde Ansicht.

- (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated]; 
     [self performSegueWithIdentifier:@"myNextControllerSegue" sender:nil]; 
    } 

dass Flimmern zu entfernen, verbirgt nur die Ansicht in Ihrer viewWillApear Methode.

anders als schnelle Suche Sie, dass in Hauptthread wie auch unter

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    //perform segue 
}) 
+0

Ich sehe ein leichtes Flackern, wo ich auch die alte Ansicht sehen kann. Wie vermeide ich das? –

+0

@HelloWorld Verstecken Sie einfach die Ansicht in Ihrer viewWillApear-Methode. –

1

viewDidLoad: wird nicht für die Durchführung von Übergängen verwendet. Sie sollten das Segment in viewDidAppear: aufrufen, wo die Ansichtsstruktur bereits eingerichtet ist.

0

Auf dem Storyboard tun, auf dem View-Controller klicken, in dem Teil „Connections Inspektor“ und in „Ausgelöst segues“ , ziehen Sie den "+" - Button zu dem Controller, den Sie erreichen möchten.

Klicken Sie jetzt auf Ihr Segment und gehen Sie auf "Attribute Inspector" Teil, und setzen Sie "myNextControllerSegue" für den Bezeichner.

Verwandte Themen