当我在小于 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 中隐藏导航栏

iOS - 导航栏隐藏/显示

当我点击带有动画的搜索栏时,iOS隐藏导航栏

为啥我的 UITextView 文本从开始时不显示并隐藏在导航栏下

从统一导出的项目中隐藏导航项:iOS