在导航控制器中为第一个视图控制器添加后退按钮的最佳方法是什么?

时间:2013-10-20 17:26:50

标签: ios7

我是iOS初学者,所以不知道如何正确解决我的问题。我有一个导航控制器,并希望模态转换到另一个导航控制器,它将在其第一个视图控制器上有后退按钮。

在我的第一个导航控制器中我做了这个:

InfoViewController *destinatinViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
[self presentViewController:destinatinViewController animated:YES completion:nil];

InfoViewController 是UINavigationViewController。

然后我在InfoViewController(第二个导航控制器)中创建了这个:

InfoRootViewController *rootViewController = [[InfoRootViewController alloc] initWithNibName:@"InfoRootViewController" bundle:nil];
[self pushViewController:rootViewController animated:NO];

现在我知道如何添加按钮以返回,但它没有造型(当然是箭头)。据我了解,因为它只是一个第二个导航控制器的堆栈视图。

所以,我需要你的帮助为导航控制器的第一个视图控制器添加样式化的后退按钮,因为我不想做自己的样式(我很懒)。

谢谢,任何进步!

PS:我进行了模态转换,因为它具有来自底部或顶部的动画。我试图为 pushViewController 使用自定义动画,但在iOS 7中它们的工作不正确。

1 个答案:

答案 0 :(得分:0)

我会让别人帮你解决后退按钮问题,因为我认为为屏幕底部显示的模态视图控制器创建一个是错误的。通常,这种模态视图控制器被取消按钮或其等效物解除。如果你真的认为你需要一个后退按钮,那么你应该将视图控制器推到现有的导航堆栈而不是以模态方式呈现它。

但是,我很高兴向您展示如何正确分配/初始化导航控制器然后呈现它。

我不知道你为什么要继承UINavigationController,但我会假装你不需要(可能就是这种情况)。

InfoRootViewController *rootViewController = [[InfoRootViewController alloc] initWithNibName:@"InfoRootViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootViewController];
[self presentViewController:navController animated:YES completion:nil];