我的应用程序以带有一些按钮的视图开始。我想根据按下的按钮导航到不同的视图,并传递不同的参数。
我的故事板如下所示:
如您所见,按下主视图中的按钮可调用嵌入在导航控制器中的表格视图。这给我带来了很多问题!
起初我不知道我是否选择了正确的方法,或者我是否要使用导航控制器而不是视图启动我的应用程序(我已经尝试过此解决方案,但在我的主页中不想要导航栏,也不想让它可见或不可见,在视觉上并不是很好。
如果您确认我的初始方法的可行性,我如何导航到所需的视图并传递一些参数?
------编辑:
我终于找到了一个有效的解决方案。导航控制器是我的应用程序中的第一个控制器。视图与标准segue相关联。
在我的家庭观点中:
- (void)viewWillAppear:(BOOL)animated
{
[[self navigationController] setNavigationBarHidden:YES animated:YES];
}
在我的表格视图中:
- (void)viewWillAppear:(BOOL)animated
{
[[self navigationController] setNavigationBarHidden:NO animated:YES];
}
这样,按下按钮时,新视图将显示动画,与导航栏相同。当您在表格视图中按后退按钮时也会发生同样的情况。
不再需要代码行!!!
你可以做的唯一成瘾就是在第一次加载应用程序时进行管理,以隐藏主视图中的导航栏而不用动画。
yassa
答案 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];
});