iOS ViewDeck删除整体标题栏

时间:2013-05-22 13:11:24

标签: ios objective-c viewdeck

我目前正在开发一个涉及Inferis的ViewDeck的项目。

我正在寻找创建Facebook风格的菜单界面。但是我似乎无法将标题栏设置为本地而不是全局的deckController。

所以基本上,我有一个rootviewcontroller,它在栈上推送登录视图控制器。没有什么花哨。但是当我登录时,它需要在堆栈上推送IIViewDeckController,但没有所有导航栏

如何编码:

neighbourhoodViewController *nextViewController = [[neighbourhoodViewController alloc] initWithNibName:@"neighbourhoodViewController" bundle:nil];
menuViewController *leftViewController = [[menuViewController alloc]  initWithNibName:@"menuViewController" bundle:nil];
IIViewDeckController* deckController =  [[IIViewDeckController alloc] nitWithCenterViewController:nextViewController leftViewController:leftViewController];
deckController.leftSize = 100.0f;
[self.navigationController pushViewController:deckController animated:YES];

outcomming是以下截图: http://s15.postimg.org/pli8zk53f/Schermafbeelding_2013_05_22_om_15_00_43.png

正如您所看到的那样,菜单是"在viewcontroller中#34;但它需要在外面,因此导航栏应该与中间的TableViewController一起滑动

我试图隐藏所有导航栏,但似乎没有任何效果。我也尝试从app delegate启动它,因为这是示例中的。有用。但是,我需要从Login View Controller运行它。

日Thnx

1 个答案:

答案 0 :(得分:2)

您需要稍微重新排列结构。

使IIViewDeckController成为你app的rootViewController并将它的centreController设置为你的UINavigationController。

让你的LoginViewController在开始时成为你的UINavigationController的topViewController,从而显示要开始的Login视图。 如果您不想在Login上看到NavigationBar,请将此添加到您的LoginViewController:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

-(void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

要防止在登录时执行任何ViewDeck操作,请在ViewDeck的委托中执行此操作:

- (BOOL)viewDeckController:(IIViewDeckController*)viewDeckController shouldOpenViewSide:(IIViewDeckSide)viewDeckSide {
    UINavigationController *navController = (UINavigationController*)self.centerController;

    if([[navController viewControllers] count] < 2) {
        return NO;
    }

    return YES;
}

显然,当用户成功登录时,您只需将“neighbourhoodViewController”推入堆栈即可。当他们退出时再将其弹回。