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

Moh*_*Ali 0 objective-c uinavigationcontroller 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];
Run Code Online (Sandbox Code Playgroud)

我也尝试了以下代码,但它不是推动视图控制器.

  UIStoryboard * storyboard = [[[UIApplication sharedApplication] keyWindow] rootViewController].storyboard;
UIViewController* pushtoVC = [storyboard instantiateViewControllerWithIdentifier:@"home"];
UINavigationController *navController = [[[[UIApplication sharedApplication] keyWindow]rootViewController] navigationController];
[navController pushViewController:pushtoVC animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是如果我在模态上使用当前视图控制器它正在工作但导航控制器仅隐藏View控制器已加载.在没有导航控制器的情况下模拟呈现的代码如下.

 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];
Run Code Online (Sandbox Code Playgroud)

以上代码以模态方式呈现视图控制器,但导航控制器已从视图控制器中删除,但我想导航到带导航控制器的主视图控制器.

Wai*_*ain 6

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

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

UINavigationController *navController = (UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController];
[navController pushViewController:pushtoVC animated:YES];
Run Code Online (Sandbox Code Playgroud)