2011-07-18 216 views
0

当我尝试呈现一个模态视图控制器时,它覆盖了我的导航控制器的导航栏。有小费吗?谢谢。模态视图导航控制器栏

UPDATE(含代码):

ComposeText *compText = [[ComposeText alloc] initWithNibName:@"ComposeText" bundle:[NSBundle mainBundle]]; 
compNavController = [[UINavigationController alloc] initWithRootViewController:compText]; 
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:compNavController action:@selector(compDoneTapped:)]; 
compNavController.navigationItem.rightBarButtonItem = doneButton; 
[self presentModalViewController:compNavController animated:YES]; 
compText.title = @"Compose"; 
[doneButton release]; 

一切似乎是为了,但按钮依然没有出现在导航栏上。

回答

1

这就是它应该做的。如果你想要一个导航栏,以模态方式呈现一个新的UINavigationController,并将它的根视图控制器设置为你的modalViewController。

0

UINavigationController有它自己的方法来显示另一个viewController。

-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated 

它使用堆栈来推送新的viewController,以便它可以处理按钮的导航。

1

你需要问自己的问题是:“为什么我要显示我的导航栏”。如果是让用户访问某些按钮,那么这是错误的原因。模态视图控制器可以完全控制屏幕,并且不允许用户在控制器被解散之前操纵应用中的其他任何东西。如果你不希望像Cyprian所建议的那样做,并在你的导航堆栈上推视图控制器。

如果它只是一个可视化的东西(标志...)复制它在你的模态视图控制器。

+0

我需要显示对应用程序导航至关重要的按钮 - 只需发布内容的按钮和取消按钮即可。 presentModalViewController动画似乎最有意义。除了将新视图推到导航控制器的堆栈外,还有更好的选择吗? –

相关问题