0

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

我的故事板如下所示:

在此处输入图像描述 .

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

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

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

- - - 编辑:

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

在我的家庭视图中:

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

在我的表格视图中:

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

这样,当您按下按钮时,新视图会以动画形式显示,导航栏也是如此。当您在表格视图中按下后退按钮时,也会发生同样的情况。

不需要更多的代码行!!!

唯一能让它变得完美的瘾是管理应用程序第一次加载以在没有动画的情况下隐藏主视图中的导航栏。

亚萨

4

1 回答 1

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];         
    });
于 2012-02-10T16:16:03.190 回答