ViewDeck 在设置中心控制器时移除导航栏
Posted
技术标签:
【中文标题】ViewDeck 在设置中心控制器时移除导航栏【英文标题】:ViewDeck removes navigation bar when setting center controller 【发布时间】:2013-09-08 06:14:00 【问题描述】:我目前正在使用带有 Storyboard 的 ViewDeck,并在 application didFinishLaunchingWithOptions
中进行了以下设置:
//View Deck Setup
UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
UIViewController* menuController = [mainStoryboard instantiateViewControllerWithIdentifier:@"LeftSideMenu"];
UINavigationController* navigationController = (UINavigationController *) self.window.rootViewController;
self.viewDeckController = [[IIViewDeckController alloc] initWithCenterViewController:navigationController leftViewController:menuController rightViewController:nil];
self.window.rootViewController = self.viewDeckController;
但是,当我从 MenuViewController 设置新的 CenterController
时,导航栏会被移除,即使加载与我之前查看的相同的中心视图控制器也是如此。
- (IBAction)viewUsers:(UIButton *)sender
UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
UIViewController* viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"middleViewController"];
[self.viewDeckController setCenterController:viewController];
[self.viewDeckController closeLeftView];
我做错了什么?
【问题讨论】:
这种情况你解决了吗?我也有同样的问题... @Camacho 我还没有找到解决方案。 请在我的回答中找出解决方案。我希望这个答案可以解决您项目中的这种情况! 【参考方案1】:解决方案是删除 AppDelegate 和您的 TabBar 之间的任何“甲板构造函数”类。当您需要设置或更改甲板结构时,我为每个结构创建了几种方法。例如,如果您希望 Deck 左侧有“leftView”视图控制器,右侧有“rightView”,中间有“tabBarHome”,请在 App Delegate 中创建这样的方法:
-(void) lanzarHome
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
IIViewDeckController* deckController =[[IIViewDeckController alloc] initWithCenterViewController:[storyboard instantiateViewControllerWithIdentifier:@"tabBarHome"]
leftViewController:[storyboard instantiateViewControllerWithIdentifier:@"leftView"]
rightViewController:[storyboard instantiateViewControllerWithIdentifier:@"rightView"]];
deckController.leftSize = 100;
self.window.rootViewController = deckController;
[self.window makeKeyAndVisible];
现在,你必须从你的 viewController 调用这个方法,语句如下:
[((VKAppDelegate*) [[UIApplication sharedApplication] delegate]) lanzarHome];
最重要的想法是创建从 AppDelegate 更改或初始化 Deck 结构的方法,并且在委托和中心 TabBar 之间永远不会有另一个类或 viewController。
我希望这个答案能解决您的问题。对我来说,找出这个问题是一项非常艰巨的工作。
【讨论】:
感谢您分享此解决方案!我真的很感激。以上是关于ViewDeck 在设置中心控制器时移除导航栏的主要内容,如果未能解决你的问题,请参考以下文章