【问题标题】:How do I hide the status bar of a pushed view controller in objective c?如何在目标 c 中隐藏推送视图控制器的状态栏?
【发布时间】:2014-04-03 05:25:43
【问题描述】:

我有一个在点击按钮时弹出的注册表单。 我的目标是在弹出此模式时隐藏状态栏。

这是我的代码:

- (IBAction)tappedJoinButton:(id)sender {

    if (![PFUser currentUser]) {

        PFSignUpViewController *signUpViewController = [[PFSignUpViewController alloc] init];
        [signUpViewController setDelegate:self]; // Set ourselves as the delegate

        // Present the sign up view controller
        [self presentViewController:signUpViewController animated:YES completion:NULL];
    }
}

我已在我的 plist 文件中将基于视图控制器的状态栏外观设置为是。现在我想选择隐藏状态栏的位置。在这种情况下,我想将其隐藏在弹出的 signUpViewController 中。

我在这里没有看到任何显示如何将其隐藏在推送视图控制器中的答案。

我如何做到这一点?

亲切的问候

【问题讨论】:

  • [[UIApplication sharedApplication] setStatusBarHidden:NO];试试这个代码...
  • [[UIApplication sharedApplication] setStatusBarHidden:YES];

标签: ios objective-c cocoa-touch pushviewcontroller uistatusbar


【解决方案1】:

如果您只想隐藏一个 ViewController 的状态栏,请执行以下操作:

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [[UIApplication sharedApplication] setStatusBarHidden:YES];

}


- (void)viewWillDisappear:(BOOL)animated{
    [[UIApplication sharedApplication] setStatusBarHidden:NO];
    [super viewWillDisappear:animated];
}

对于您的情况,它将位于PFSignUpViewController

希望这会有所帮助.. :)

【讨论】:

  • 我如何访问我的 viewWillAppear 方法?此 signUpViewController 是在代码中创建的。如何从 tappedJoinButton 方法中访问它?这是我卡住的地方。
  • @LondonGuy >> 检查是否有隐藏状态栏的属性,或者你可以创建一个 signUpViewController 的子类(没有状态栏)。然后您可以访问 PFSignUpViewController 的属性。在该类中,您可以声明这些或 prefersStatusBarHidden 方法。
  • 我刚刚创建了一个新类,它是 PFSignUpViewController 的子类,然后创建了一个实例。在新类中,我将首选状态隐藏方法设置为返回是,它工作正常。
  • @londonGuy >> 很高兴听到这个消息。 :)
  • 此 API 已弃用
【解决方案2】:

试试这个代码

PFSignUpViewController中的viewDidload

 if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
    // iOS 7
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
} else {
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
}

将此函数粘贴到控制器中

- (BOOL)prefersStatusBarHidden {
return YES;
}

【讨论】:

  • 如何访问PFSignUpViewController的viewDidLoad?
【解决方案3】:

你喜欢......

if ([UIApplication sharedApplication].statusBarHidden != hideStatusBar)
{

    [[UIApplication sharedApplication] setStatusBarHidden:hideStatusBar withAnimation:UIStatusBarAnimationSlide];
}

【讨论】:

    【解决方案4】:

    在你的视图中写下WillAppear...

           [[UIApplication sharedApplication] setStatusBarHidden:YES];
    

    或者试试这个方法....

           -(void)navigationController:(UINavigationController *)
       navigationController willShowViewController:(UIViewController *)
       viewController animated:(BOOL)animated
    
           {
              [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
            }
    

    【讨论】:

      【解决方案5】:

      在plist中添加这个“基于控制器的状态栏”外观并设置为NO

        [[UIApplication sharedApplication] setStatusBarHidden:YES];  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-03
        • 1970-01-01
        相关资源
        最近更新 更多