当您进入由搜索显示控制器处理的搜索栏时,它将向上滑动视图并将导航栏向上推。这很容易做到,但是,当您单击搜索结果并在导航控制器的堆栈上按下新视图时,导航栏会从右侧滑入视图!搜索显示控制器如何隐藏导航栏?
这是如何完成的?如果您只需将导航栏设置为隐藏或显示,就会立即发生。我无法弄清楚它是如何隐藏在一个视图控制器中的!
非常感谢,
迈克尔
当您进入由搜索显示控制器处理的搜索栏时,它将向上滑动视图并将导航栏向上推。这很容易做到,但是,当您单击搜索结果并在导航控制器的堆栈上按下新视图时,导航栏会从右侧滑入视图!搜索显示控制器如何隐藏导航栏?
这是如何完成的?如果您只需将导航栏设置为隐藏或显示,就会立即发生。我无法弄清楚它是如何隐藏在一个视图控制器中的!
非常感谢,
迈克尔
您可以动画导航栏的过渡。有关更多详细信息,请参阅-setNavigationBarHidden:animated:
。
如果你需要做到这一点每个视图控制器的基础上,只覆盖视图控制器的-viewDidAppear:
和-viewWillDisappear:
方法,例如:
- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
以上将隐藏导航栏时,该视图控制器推在导航堆栈顶部,并在视图控制器弹出时显示导航栏。
您可以随时拨打-setNavigationBarHidden:animated:
,但这两种方法对于应用大量UI更改很有用。
-(void)viewDidLayoutSubviews{
[self.navigationController setNavigationBarHidden:NO animated:NO];
}
它不会隐藏导航栏。
是的但那会隐藏导航栏,当你推动另一个视图控制器时,它仍然是隐藏的。即使您在推新控制器时显示导航栏,您也会看到导航栏显示在前一个控制器上。这是因为导航栏对于导航控制器堆栈上的所有控制器都是相同的栏。因此,对于搜索显示控制器如何执行它的操作感到困惑! – 2009-11-20 01:14:01
查看编辑答案。您可以在推送/弹出视图控制器时为导航栏设置动画。 – 2009-11-20 01:55:25
啊啊不行!天才!我不知道在viewWillAppear/Disappear中放置显示/隐藏代码会对导航栏的显示方式产生任何影响!非常感谢,我在这个问题上被困了好几个小时! – 2009-11-20 02:10:24