带导航控制器栏的模态视图

时间:2011-07-18 20:48:41

标签: iphone xcode uinavigationcontroller modalviewcontroller

当我尝试呈现modalViewController时,它会覆盖我的导航控制器的导航栏。有小费吗?感谢。

更新(带代码):

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];

一切似乎都是有序的,但按钮仍然没有出现在导航栏上。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

如果它只是一个视觉事物(徽标......)在你的模态视图控制器中复制它。

答案 2 :(得分:0)

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

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

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