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

5
我正在使用Xcode的“Utility Application”模板,并有一个“Main View Controller”,用户可以使用按钮隐藏和显示状态栏。我还有一个“Flipside View Controller”,使用modal 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 吗?编辑 更糟糕的是因为你使用了 = 而不是 ==,所以这甚至是错误的。 - Gabriele Petronella
@GabrielePetronella 嗯,我不知道,我想我可以吧,抱歉,但我对编程经验不是很丰富,所以我在这里问问题,但那只是一些额外的信息,不是问题的一部分 :/ - Ben
@GabrielePetronella 是的,我正在分配:( 对不起,我并不是在问语法是否正确。 - Ben
https://dev59.com/wWIj5IYBdhLWcg3w6I89#19867698 - John Riselvato
1个回答

2

你可以考虑使用属性在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;
}

好的,看起来很不错,非常感谢。但是有一件事,如果我在FlipsideViewController中写下以下代码:MainViewController * mainVC = self.presentingViewController; if (mainVC.statusBarHidden) { // Do stuff }我会得到错误:未知类型名称...MainViewcontroller 我猜这是因为我没有导入 Main VC.h 文件,但是我需要导入它吗? - Ben
当然,你需要在FlipsideViewController中添加#import "MainViewController.h" - Gabriele Petronella

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接