当我在小于 10 的 ios 版本中隐藏/显示导航栏时,应用程序在进入后台后卡住
Posted
技术标签:
【中文标题】当我在小于 10 的 ios 版本中隐藏/显示导航栏时,应用程序在进入后台后卡住【英文标题】:Apps get stuck after going to background when I hide/show navbar in ios version less than 10 【发布时间】:2016-12-07 06:49:39 【问题描述】:我正在使用此代码在我的应用程序中隐藏导航栏,以保持弹出过渡。一切正常,直到我的应用程序进入后台。当我来到前台时,它卡住了。我在低于 ios10 的 iOS 版本中面临这个问题。在 iOS10 中一切正常。任何人都面临同样的问题?
- (void)viewWillAppear:(BOOL)animated
self.navigationController.navigationBar.hidden = YES;
- (void)viewWillDisappear:(BOOL)animated
self.navigationController.navigationBar.hidden = NO;
【问题讨论】:
您是否尝试删除此代码?我认为卡住不会因此而发生。 你在viewWillDisappear:
中打电话给[super viewWillAppear:animated];
;这可能是问题所在。
Yupp 删除了代码,一切正常。 @venkat
@Ritu One 不要编辑出有问题的原始代码。稍后阅读您的问题的人可能会感到困惑。
@Venkat 我很确定这是因为导航栏隐藏和显示而发生的,因为如果我删除它一切正常。
【参考方案1】:
将以下代码中的[super viewWillAppear:animated];
替换为[super viewWillDisappear:animated];
:
- (void)viewWillDisappear:(BOOL)animated
// [super viewWillAppear:animated];
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
【讨论】:
该死!这是一个复制粘贴错误。我已经写了 [super viewWillDisappear:animated];仅限。 是的,每次都会发生。 另外,从被覆盖的方法中移除 super 并不是一个好主意。根据 Apple 文档,如果您重写此方法,则必须在实现中的某个时间点调用 super。以上是关于当我在小于 10 的 ios 版本中隐藏/显示导航栏时,应用程序在进入后台后卡住的主要内容,如果未能解决你的问题,请参考以下文章
向导航栏添加渐变将隐藏 iOS 13.0 + 中的栏按钮项目
PresentViewController 在 iOS 中隐藏导航栏