检查使用模态视图控制器隐藏的 iOS 状态栏

Posted

技术标签:

【中文标题】检查使用模态视图控制器隐藏的 iOS 状态栏【英文标题】:Check the iOS status bar hidden with a modal view controller 【发布时间】:2013-01-11 04:11:21 【问题描述】:

所以我在 Xcode 中使用“实用程序应用程序”模板并拥有 主视图控制器,用户可以在其中使用按钮隐藏和显示状态栏。我还有 Flipside View Controller,使用模态 segue,它有一个完成按钮来返回 Main VC。我已经进行了设置,以便在查看 Flipside VC 时,状态栏始终不会隐藏。这意味着如果用户隐藏了 Main VC 上的状态栏并转换到 Flipside VC,它将会动画并且如果用户没有隐藏状态栏并且它们转换,状态栏没有任何反应。

这很好,问题是从 Flipside VC 转换回 Main VC。我需要一个条件来检查 Main VC 中状态栏的隐藏状态,按下完成按钮时会在 Flipside VC 中调用。

我研究过使用 BOOL 和 NSNotificationCenter 向 Flipside VC 发送关于状态栏状态的消息。

我有这个代码:

-(BOOL)checkStatusBarHidden:(id)input

    BOOL result;

    if ([UIApplication sharedApplication].statusBarHidden = YES)
    
        result = YES;
    
    else
    
        result = NO;
    

    return result;

但这只是猜测和思考,我也许可以在某处使用它来通知 Flipside VC 状态栏状态。我想也许可以改变

[UIApplication sharedApplication].statusBarHidden = YES)

类似

self.statusBarHidden = YES //which of course isn't going to work

但无论如何,正如我所说,这是猜测,我不确定该怎么做。

【问题讨论】:

看在上帝的份上,你为什么需要if 声明?你就不能写return [UIApplication sharedApplication].statusBarHidden吗? 编辑由于使用=而不是==,因此您正在分配而不是比较,这甚至是错误的。 @GabrielePetronella 是的,我不知道我想我可以,抱歉,我对编程不是很有经验,这就是我在这里问的原因,但这只是一些额外的信息,并不是真正的一部分问题:/ @GabrielePetronella 是的,我正在分配 :( 抱歉,并没有询问语法有多正确 ***.com/questions/19774968/… 【参考方案1】:

您可能会考虑使用属性将有关状态栏状态的信息存储在MainViewController 中,例如

在你的MainViewController.h

@property (nonatomic, assign) BOOL statusBarHidden;

然后您可以使用presentingViewController 属性从FlipsideViewController 访问该值。

在你的FlipsideViewController.h

MainViewController * mainVC = self.presentingViewController;
if (mainVC.statusBarHidden) 
   // Do stuff

最后,将您的 checkStatusBarHidden: 方法更改为类似

- (BOOL)checkStatusBarHidden 
    return [UIApplication sharedApplication].statusBarHidden;

【讨论】:

好的,非常感谢。不过有一件事,如果我输入: MainViewController * mainVC = self.presentingViewController; if (mainVC.statusBarHidden) // Do stuff 在 FlipsideViewcontroller 中,我得到错误 Unknown type name...MainViewcontroller 我猜是因为我没有导入 Main VC .h 文件,但我不能或什至不需要它吗? 是的,您当然需要将#import "MainViewController.h 添加到您的FlipsideViewController

以上是关于检查使用模态视图控制器隐藏的 iOS 状态栏的主要内容,如果未能解决你的问题,请参考以下文章

隐藏在模态视图中的状态栏(在全屏演示中)

如何更改模态视图 iOS 6 上的状态栏

iOS 7:模态视图控制器状态栏颜色错误,但普通视图控制器正确

关闭模态视图后的状态栏和导航栏问题

iOS 8.4 状态栏动画故障

在所有视图控制器中隐藏状态栏 - IOS [重复]