如何从NSObject类获取导航控制器,并在ios中推视图控制器

我在一个静态库项目中工作,我想在iOS项目的导航控制器中推一个视图控制器我该怎么做? 我这样做如下:

UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard; UIViewController* pushtoVC = [storyboard instantiateViewControllerWithIdentifier:@"home"]; UINavigationController *navController = [[[[UIApplication sharedApplication] keyWindow]rootViewController] navigationController]; [navController pushViewController:pushtoVC animated:YES]; 

我也尝试了下面的代码,但它并没有推视图控制器。

  UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard; UIViewController* pushtoVC = [storyboard instantiateViewControllerWithIdentifier:@"home"]; UINavigationController *navController = [[[[UIApplication sharedApplication] keyWindow]rootViewController] navigationController]; [navController pushViewController:pushtoVC animated:YES]; 

但是,如果我使用目前的视图控制器模态它正在工作,但导航控制器隐藏只有视图控制器被加载。 在没有导航控制器的情况下工作呈现模态的代码如下。

  UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard; if ([[storyboard valueForKey:@"identifierToNibNameMap"] objectForKey:@"home"]) { // the view controller exists, instantiate it here UIViewController* myVC = [storyboard instantiateViewControllerWithIdentifier:@"home"]; myVC.modalPresentationStyle = UIModalPresentationFullScreen; [[[[UIApplication sharedApplication]keyWindow] rootViewController] presentViewController:myVC animated:YES completion:nil]; 

上述代码模式呈现视图控制器,但导航控制器从视图控制器中删除,但我想导航到导航控制器的主视图控制器。

目前还不完全清楚你想要做什么,所以可以说你应该通过一个控制器来用于演示,或者将控制器传递给其他知道如何呈现它的其他人。

无论如何,我想你的根VC是一个导航控制器,所以你应该直接使用,而不是要求它的导航控制器(这是零)。

 UINavigationController *navController = (UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController]; [navController pushViewController:pushtoVC animated:YES];