Ios 使用故事板中的按钮在NavigationController中嵌入的视图之间导航

Ios 使用故事板中的按钮在NavigationController中嵌入的视图之间导航,ios,button,uinavigationcontroller,storyboard,segue,Ios,Button,Uinavigationcontroller,Storyboard,Segue,我的应用程序以带有一些按钮的视图开始。我想根据按下的按钮导航到不同的视图,并向它们传递不同的参数 我的故事板如下所示: 如您所见,按下主视图中的按钮将调用嵌入导航控制器中的表视图。这给我带来了很多问题 起初,我不知道我是否选择了正确的方法,或者我是否必须用导航控制器而不是视图启动我的应用程序(我尝试过这个解决方案,但在我的主页上,我不想要导航栏,也不想让它可见,这在视觉上不是很好) 如果您确认了我的初始方法的可行性,我如何通过传递一些参数导航到所需的视图 ----编辑: 我终于找到了一个有效

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

我的故事板如下所示:

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

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

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

----编辑:

我终于找到了一个有效的解决办法。导航控制器是我的应用程序中的第一个控制器。视图与标准segue连接

在我的家庭观点中:

- (void)viewWillAppear:(BOOL)animated
{
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}
在我的表格视图中:

- (void)viewWillAppear:(BOOL)animated
{
    [[self navigationController] setNavigationBarHidden:NO animated:YES];
}
这样,当您按下按钮时,新视图将显示一个动画,该动画与导航栏相同。当您在表视图中按下后退按钮时,也会发生同样的情况

不需要更多的代码行

要使其完美,您唯一能做的就是管理应用程序第一次加载时在主视图中隐藏导航栏而不显示动画


yassa

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

因此,视图控制器堆栈如下所示:

故事板 -HomeViewController -YourTableViewController

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

[self.navigationController setNavigationBarHidden:YES animated:NO];
如果要在视图控制器中显示,请使用:

[self.navigationController setNavigationBarHidden:NO animated:NO];
这些代码行应该指向与显示视图相关的方法,即viewdide:或prepareforsgue:方法

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

[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];         
    });

正如我所写的,我已经尝试过这个解决方案:我试图在主视图的ViewWillDisplay中隐藏导航栏,并在表视图的ViewWillDisplay中显示它。真是一个丑陋的效果!!!:(在我的例子中,这足以在显示下一个视图控制器(在你的例子中是表视图控制器)时增加一些延迟。我在上面作为编辑的代码中这样做了。我不需要延迟,检查更新的问题!再次感谢你!