3 回答
TA贡献1828条经验 获得超3个赞
我发现最好的解决方案是在第一个视图控制器中执行以下操作。
Objective-C的
- (void)viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:YES animated:animated];
[super viewWillAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated:animated];
[super viewWillDisappear:animated];
}
迅速
override func viewWillAppear(animated: Bool) {
self.navigationController?.setNavigationBarHidden(true, animated: animated)
super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
self.navigationController?.setNavigationBarHidden(false, animated: animated)
super.viewWillDisappear(animated)
}
当您按下UIViewController堆栈上的下一个时,这将导致导航栏从左侧(与下一个视图一起)动画,并在您按下后面的后退按钮时向左移动(与旧视图一起)UINavigationBar。
请注意,这些不是委托方法,您要覆盖UIViewController这些方法的实现,并且根据文档,您必须在实现中的某处调用super的实现。
TA贡献1775条经验 获得超11个赞
我必须对其他答案进行一些轻微的调整,只是取消隐藏在viewWillDisappear中的栏,如果它消失的原因是由于推送了导航项目。这是因为视图可能因其他原因而消失。
所以如果这个视图不再是最顶层的视图,我只会取消隐藏栏:
- (void) viewWillDisappear:(BOOL)animated
{
if (self.navigationController.topViewController != self)
{
[self.navigationController setNavigationBarHidden:NO animated:animated];
}
[super viewWillDisappear:animated];
}
- 3 回答
- 0 关注
- 618 浏览
添加回答
举报