使用Storyboard中的按钮在NavigationController中嵌入的视图之间导航

时间:2012-02-10 16:03:50

标签: ios button uinavigationcontroller storyboard segue

我的应用程序以带有一些按钮的视图开始。我想根据按下的按钮导航到不同的视图,并传递不同的参数。

我的故事板如下所示:

enter image description here

如您所见,按下主视图中的按钮可调用嵌入在导航控制器中的表格视图。这给我带来了很多问题!

起初我不知道我是否选择了正确的方法,或者我是否要使用导航控制器而不是视图启动我的应用程序(我已经尝试过此解决方案,但在我的主页中不想要导航栏,也不想让它可见或不可见,在视觉上并不是很好。

如果您确认我的初始方法的可行性,我如何导航到所需的视图并传递一些参数?

------编辑:

我终于找到了一个有效的解决方案。导航控制器是我的应用程序中的第一个控制器。视图与标准segue相关联。

在我的家庭观点中:

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

在我的表格视图中:

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

这样,按下按钮时,新视图将显示动画,与导航栏相同。当您在表格视图中按后退按钮时也会发生同样的情况。

不再需要代码行!!!

你可以做的唯一成瘾就是在第一次加载应用程序时进行管理,以隐藏主视图中的导航栏而不用动画。

yassa

1 个答案:

答案 0 :(得分:1)

在一个非常类似的情况下,我将导航控制器作为故事板中的初始控制器,以便主页将成为此导航控制器的根视图控制器。

所以视图控制器堆栈看起来像这样:

故事板   - HomeViewController      - YourTableViewController

如果您想在主页中隐藏导航栏,只需使用以下命令隐藏/显示代码:

[self.navigationController setNavigationBarHidden:YES animated:NO];

如果要在视图控制器中显示它,请使用:

[self.navigationController setNavigationBarHidden:NO animated:NO];

这些代码行应该转到与显示视图相关的方法,即viewDidAppear:或prepareForSegue:方法

编辑: 我还在我的应用程序中添加了推送下一个视图控制器的延迟:

[self.navigationController setNavigationBarHidden:NO animated:YES];

    // Showing navigation bar animation
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC), dispatch_get_current_queue(), ^{
        [self.navigationController pushViewController:viewController animated:YES];         
    });