【发布时间】:2016-04-09 07:33:10
【问题描述】:
我在一个静态库项目中工作,我想在 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];
以上代码以模态方式呈现视图控制器,但导航控制器已从视图控制器中移除,但我想使用导航控制器导航到主视图控制器。
【问题讨论】:
-
我看不出前两个代码sn-ps有什么区别。
-
拥有一个与使用它的应用程序如此紧密耦合的静态库似乎很奇怪。您通常会使用委托模式或让应用程序向库提供信息
标签: ios objective-c uinavigationcontroller