2016-08-05 10 views
0

Ich versuche, an einer einfachen Login-Anwendung zu arbeiten, die bei erfolgreicher Anmeldung eine Menüseite anzeigt. Auf dem Aktionsblatt der Menüseite haben wir die Möglichkeit, alle an diesem Telefon angemeldeten Benutzer anzuschauen und auf einen beliebigen Benutzer zu klicken. Er sollte einige Anmeldevorgänge durchführen und direkt zur Menüseite zurückkehren. So sollte der Workflow weitergehen.Navigation zwischen Controllern - Black Screens

Unten ist das Bild, das es erklärt.

enter image description here

Alle Steuerungen sind segues verbunden mit Ausnahme von Konten Controller und mittlere Controller. Die Navigation zwischen diesen beiden Funktionen erfolgt über pushViewController, da ich einige Informationen vom Account-Controller (Tabellenansicht-Controller mit einer Liste aller Benutzer) an den mittleren Controller übergeben musste.

MiddleController *maController = [[MiddleController alloc] init]; 
     if (maController.view) { 
      maController.ma_userId = mo_userId; // Set the exposed property 
      maController.ma_password = mo_password; 
     [self.navigationController pushViewController:maController animated:YES]; 

Der mittlere Controller macht den ganzen Prozess perfekt, nachdem er die Details erhalten hat. Aber die Regie zum Menü-Controller ist, wo ich mit dem Problem konfrontiert bin. Wenn ich einen Zwischenschritt zwischen dem mittleren Controller und dem Menücontroller verwende, wird ein Fehler ausgegeben, der lautet: no identifier with the name segueName found. Aber wenn ich eine pushViewController verwende, dann zeigt es einen leeren schwarzen Bildschirm an. Kann mir jemand helfen, das zu lösen?

Dies ist, wie ich es bin drängen:

MenuTableViewController *mapMenuTableviewController = [[MenuTableViewController alloc]init]; 
     [self.navigationController pushViewController:mapMenuTableviewController animated:NO]; 

ich alle Möglichkeiten versucht haben, die in früheren SO Fragen gepostet werden, aber nichts half.

Vielen Dank im Voraus

+0

Art und Weise Sie useing [self.navigationController popViewControllerAnimated: YES]; –

+0

@Balkaransingh Wenn ich den gleichen Code wie du benutze, zeigt es nur den gleichen Bildschirm wie Konten-Controller. – ASN

+0

ok @ASN möchten Sie MenuTableViewController nach dem Klicken auf die Schaltfläche gehen? –

Antwort

1

Versuchen zu Alloc-init nicht, aber es Fom Drehbuch wie dieses instanziiert (Sie sollten es ein Storyboard-ID)

YourViewControllerClass *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController"]; 

Und dann schieben.

+0

@IIya: Können Sie erklären, was Sie mit 'Sie sollten es eine Storyboard-ID hinzufügen '. – ASN

+0

Bitte schauen Sie sich diese Frage an: http://StackOverflow.com/Q/13867565/6562596 –

+0

in meinem Fall sollte ich die StoryboardID für Menü-Controller richtig definieren? – ASN

0

Fügen Sie die Storyboard-ID dem Schnittstellen-Builder "SendSMSViewController" hinzu und rufen Sie den folgenden Code an.

let SendSmsVC = self.storyboard?.instantiateViewControllerWithIdentifier("SendSMSViewController") as! SendSMSViewController 

    self.navigationController?.pushViewController(SendSmsVC, animated: true) 
1

Sie müssen wie dieses

enter image description here

Storyboard-ID hinzufügen und wie

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewControllerID"]; 
+0

in meinem Fall, sollte ich die StoryboardID für Menü-Controller richtig definieren? – ASN

0

Plz diesen Code verwenden Sie MenuTableViewController gehen.

for (UIViewController *controller in self.navigationController.viewControllers) 
        { 
         if ([controller isKindOfClass:[MenuTableViewController class]]) 
         { 
          [self.navigationController popToViewController:controller animated:YES]; 

          break; 
         } 
        } 
1

zu Storyboard gehen, und eine Kennung wie folgt festgelegt:

enter image description here

Nun, dies in Ihren View-Controller, tun:

YourViewController *viewController = [[UIStoryboard storyboardWithName:@"<your storyboard name>" bundle:nil] instantiateViewControllerWithIdentifier:@"myViewControllerID"]; 
[self.navigationController pushViewController:viewController animated:NO]; 

UPDATE -

Drücken Sie die Accounts View Controller und Middle View Controller den Weg Ich habe es vorher gesagt.

Dann, wenn Ihre Verarbeitung in der Mitte Controller erfolgt, gerade dies tun:

[[self presentingViewController]presentingViewController]dismissViewControllerAnimated:NO completion:nil]; 
+0

in meinem Fall sollte ich die StoryboardID für Menü-Controller richtig definieren? – ASN

+0

Ja, verwenden Sie es für die View-Controller, in denen Sie keine Segmente zum Präsentieren verwenden. (hier, Ihre Konten und mittleren Controller) –

+0

ja .. Seine Arbeit .. Danke für die Antwort. Aber da es dazwischen den mittleren Controller durchlaufen muss, sollte es einen schwarzen Bildschirm für einen Bruch zeigen und dann den Menücontroller zeigen. – ASN

Verwandte Themen