ios在splitview控制器之前添加导航

时间:2014-08-06 13:43:04

标签: ipad uisplitviewcontroller

我想在用户进入splitview控制器之前添加导航视图控制器。当我想从导航控制器转到splitview控制器时,我尝试了一些更改根控制器的方法,但是当我这样做时,我似乎没有正确设置委托。

代码没有导航视图(效果很好)

的AppDelegate

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;

UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)masterNavigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;

使用SplitView之前的导航视图的代码

的AppDelegate

 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 UIViewController* rootController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"dummy"];
self.window.rootViewController = rootController;
[self.window makeKeyAndVisible];

DummyViewController

AppDelegate *appDelegateTemp = [[UIApplication sharedApplication]delegate]; 
appDelegateTemp.window.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateInitialViewController];

这将我从我启动的DummyViewController转移到splitview控制器,它是Storyboard中的初始视图控制器。但这很好,当我这样做时,没有任何代表被调用。这可能是因为在更改根控制器时,它没有正确设置委托。我怎样才能让它以正确的方式运作?

1 个答案:

答案 0 :(得分:0)

这似乎唯一真正非黑客的方法是在详细视图控制器中的分割视图上显示模态视图

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
DummyViewController *dummy = (DummyViewController *)[storyboard instantiateViewControllerWithIdentifier:@"dummy"]; 
[self presentViewController:dummy animated:NO completion:nil];

通过将动画设置为NO,用户看不到后面加载的拆分视图。