2

Während ich OTP Viewcontroller Von Passcode-Controller am Bewegen, iam die folgenden Fehler in der Konsole erhalten:iOS deren Ansicht ist nicht in der Fensterhierarchie

Warnung: Versuch < OTPController vorstellen: 0x1e56e0a0> auf < PassCodeController: 0x1ec3e000> deren Ansicht nicht in der Fensterhierarchie ist!

Dies ist der Code, den ich zwischen den Ansichten ändern bin mit:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    OTPViewController *lOTPViewController = [storyboard instantiateViewControllerWithIdentifier:@"OTPViewController"]; 
    lOTPViewController.comingFromReg = true; 

    [self presentViewController:lOTPViewController animated:YES 
        completion:nil]; 

i-Controller Passcode Von RegistrationViewController vorstelle:

+0

aus, wo Sie präsentieren ** ** PassCodeController –

+0

UIStoryboard * Storyboard = [UIStoryboard storyboardWithName: @ "Main" Bundle: nil]; Verwenden Sie stattdessen self.storyboard –

+0

AppDelegate * appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate]; appDelegate.window.rootViewcontroller vorhanden ... –

Antwort

2

, dass wegen der zwei geschehen Viewcontroller vorhanden und gleichzeitig verwerfen oder Sie versuchen, ViewController sofort beim Öffnen des Viewcontrollers darzustellen ViewDidload Verfahren so

Erstens:

  • Präsens Viewcontroller aus viewDidAppear Methode oder anstelle von ViewDidload.

Zweitens:

Ich schlage vor, den Einsatz von Completion-Methode für die heutige und entlassen viewcontrolelr wie folgendes Beispiel zu machen:

[self presentViewController:lOTPViewController animated:YES 
          completion:^{ 

     }]; 

UPDATE:

eine separate Methode erstellen einen OTPViewController wie folgt zu präsentieren:

-(void)PresentOTPViewController 
{ 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    OTPViewController *lOTPViewController = [storyboard instantiateViewControllerWithIdentifier:@"OTPViewController"]; 
    lOTPViewController.comingFromReg = true; 

    [self presentViewController:lOTPViewController animated:YES 
        completion:^{}]; 

} 

nun diese Methode mit 1 Sekunde Delaya rufen mit performSelector

[self performSelector:@selector(PresentOTPViewController) withObject:self afterDelay:1.0 ]; 

Sie müssen in

[self dismissViewControllerAnimated:YES completion:^{ 
[self performSelector:@selector(PresentOTPViewController) withObject:self afterDelay:1.0 ]; 
}]; // this is the dismiss method of PassCodeViewController 

t über Perform Code setzen

+0

Yah das ist das Problem ist otp vc ist entlassen und Sie präsentieren sofort neue vc so fügen Sie 1-2 Sekunden Verzögerung zwischen entlassen und neue vc vorhanden –

+0

Ich bin am Mittagessen jetzt wird die Antwort innerhalb von 15 min aktualisieren –

+0

Bearbeiten Sie Ihre Frage und fügen Sie otp entlassen code plz –

2

versuchen, es aus RootViewController zu präsentieren,

[self.view.window.rootViewController presentViewController:lOTPViewController animated:YES completion:nil];

+0

@Vijay .... sagen Sie mir Schritt für Schritt Prozess – Priya

+0

@Vijay ..... überprüfen Sie es mit aktualisierten Frage ... http: //stackoverflow.com/q/ 37110406/6285383 – Priya

+0

anstelle des 'self' Schlüsselwortes zum Darstellen Ihrer View Controller versuchen Sie es mit' self.view.window.rootViewController'. Verwenden Sie diesen Code, wo Sie mit diesem Fehler konfrontiert sind! – Vijay

1

Verwenden Sie den folgenden Code-Zeile ..

// you need to create UIStoryboard object by giving name of your storyboard 
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
// here you need to create storyboard ID of perticular view where you need to navigate your app 
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"viewContIdentifire"]; 

// if use presentViewController this will not enables you to go back to previous view 
[self presentViewController:vc animated:NO completion:nil]; 
         **// OR** 
// using pushViewController lets you to go back to the previous view 
[self.navigationController pushViewController:vc animated:YES]; 
+0

@vaibhav .... Pushing Working Für mich ... danke – Priya