0

Ich muss einen View-Controller vom App-Delegaten präsentieren.Ein View-Controller kann nicht von AppDelegate dargestellt werden.

Wenn eine Telefonbenachrichtigung eingeht, kann ich entscheiden, welcher der drei View-Controller (namens ForumViewController, BlogViewController & NewsViewController) durch Analyse der 'userInfo' in der Methode 'didReceiveRemoteNotification' präsentiert werden soll.

Aber wenn ich versuche, unter dem entsprechenden View-Controller mit Storyboards oder dem Code zu präsentieren:

self.viewController = [[MembersViewController alloc] initWithNibName:@"MembersViewController" bundle:nil]; 
     self.window.rootViewController = self.viewController; 
     [self.window makeKeyAndVisible]; 

Dann gibt die App den Fehler ‚Warnung: Es wird versucht, deren Ansicht zu präsentieren ist nicht in der Fensterhierarchie! ". Außerdem bleibt es auf einem bestimmten View-Controller hängen.

Bitte beachten Sie, dass die View-Controller, die ich darzustellen versuche, nicht Teil des Flusses sind, wenn die App startet (der Fluss ist LogoViewController -> SplashViewController -> HomeViewController).

Der HomeViewController & MembersViewController sind im Wesentlichen die wichtigsten Menüseiten für öffentliche & private Anzeige. Hier muss ich dem Betrachter etwas zeigen.

+0

verwenden Sie Storyboard oder xib –

+0

1 Storyboard mit am – user2442902

Antwort

1

Wahl-1

über Push

UINavigationController *navController = (UINavigationController *)self.window.rootViewController; 
MembersViewController *vc = [navController.storyboard instantiateViewControllerWithIdentifier:@"MembersViewController"]; 

[navController pushViewController:vc animated:YES]; 

Verwendung vorliegende

MembersViewController *root = (MembersViewController *)self.window.rootViewController; 
UIViewController *vc = [root.storyboard instantiateViewControllerWithIdentifier:@"MembersViewController"]; 

[root presentViewController:vc animated:YES completion:NULL]; 

upadted

UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
MembersViewController* pvc = [mainstoryboard instantiateViewControllerWithIdentifier:@"MembersViewController"]; 
[self.window.rootViewController presentViewController:pvc animated:YES completion:NULL]; 
+0

ich die zweite Option versucht, wird die App nicht abstürzt oder hängen ... – user2442902

+0

können Sie den Crash-Bericht –

+0

zeigen, aber es gibt immer noch den gleichen Fehler und es tut nicht nehmen Sie mich zu der Ansicht Controller ich möchte – user2442902

1

einen View-Controller aus dem Storyboard laden:

[self performSelector: @selector(ShowModalViewController) withObject: nil afterDelay: 0]; 

-(void)ShowModalViewController{ 
NSString * storyboardName = @"MainStoryboard"; 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil]; 
    UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"IDENTIFIER_OF_YOUR_VIEWCONTROLLER"]; 
    [self.window.rootViewController presentViewController:vc animated:YES completion:nil]; 
} 

Identifier Ihres View-Controller ist entweder gleich den Klassennamen der View-Controller oder eine Storyboard-ID, die Sie im Identitätsinspektoren zuweisen deines Storyboards.

+0

Habe diese Lösung versucht, aber leider immer noch die gleiche Warnung, und bringt mich nicht zu dem View-Controller erforderlich, um den Benutzer – user2442902

+0

@ user2442902 Ich habe einige Bearbeitungen getan haben, versuchen, dass. Bei der Verwendung von performSelector wird der Selektor erst beim nächsten Lauf der Laufschleife aufgerufen. So haben die Dinge Zeit, sich zu beruhigen, und Sie werden nur eine Laufschleife überspringen –

Verwandte Themen