3

我目前正在将 ViewDeck 与 Storyboards 一起使用,并在以下设置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;

但是,当我CenterController从 MenuViewController 设置新的时,导航栏会被删除,即使加载与我之前查看的相同的中心视图控制器也是如此。

- (IBAction)viewUsers:(UIButton *)sender
{
    UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
    UIViewController* viewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"middleViewController"];

    [self.viewDeckController setCenterController:viewController];
    [self.viewDeckController closeLeftView];
}

我做错了什么?

4

1 回答 1

2

解决方案是删除 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。

我希望这个答案能解决你的问题。对我来说,找出这个问题是一项非常艰苦的工作。

于 2013-12-16T18:04:37.307 回答