我目前正在开发一个涉及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是以下截图:
正如您所看到的那样,菜单是"在viewcontroller中#34;但它需要在外面,因此导航栏应该与中间的TableViewController一起滑动
我试图隐藏所有导航栏,但似乎没有任何效果。我也尝试从app delegate启动它,因为这是示例中的。有用。但是,我需要从Login View Controller运行它。
日Thnx
答案 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”推入堆栈即可。当他们退出时再将其弹回。