object-c IOS 8中方法调用的奇怪行为

object-c IOS 8中方法调用的奇怪行为,ios,objective-c,uistatusbar,Ios,Objective C,Uistatusbar,我有一个视图控制器 - (BOOL)prefersStatusBarHidden { return YES; } 以前有人打过电话吗 - (void)viewDidLoad { [super viewDidLoad]; } 我是另一个视图控制器,首先调用viewDidLoad,然后调用preferssStatusBarHidden 我希望在viewDidLoad之前调用首选StatusBarHidden 请帮忙 这似乎是调用方法的顺序: initWithCoder: 从笔尖醒

我有一个视图控制器

- (BOOL)prefersStatusBarHidden {
     return YES;
}
以前有人打过电话吗

- (void)viewDidLoad
{
   [super viewDidLoad];
}
我是另一个视图控制器,首先调用
viewDidLoad
,然后调用
preferssStatusBarHidden

我希望在
viewDidLoad
之前调用
首选StatusBarHidden


请帮忙

这似乎是调用方法的顺序:

  • initWithCoder:
  • 从笔尖醒来
  • willMoveToParentViewController:
  • 首选StatusBarHidden
  • preferredStatusBarUpdateAnimation
  • 负荷视图
  • prepareForSegue:发件人:
  • viewDidLoad
  • 扩展布局包括不透明条
  • edgesForExtendedLayout
  • 视图将显示:
  • 资料来源:


    因此,您需要重新考虑您的体系结构,这样您就不会假设在
    首选StatusBarHidden
    之前调用了
    viewDidLoad
    ,对于选项卡栏控制器中的简单视图控制器,我为iOS 8.3获得了此订单

    13:57:46.610 loadView
    13:57:46.612 viewDidLoad
    13:57:46.612 updateViewConstraints
    13:57:46.613 viewWillLayoutSubviews
    13:57:46.613 viewDidLayoutSubviews
    13:57:46.614 viewWillAppear:
    13:57:46.616 prefersStatusBarHidden
    13:57:46.616 viewWillLayoutSubviews
    13:57:46.616 viewDidLayoutSubviews
    13:57:46.712 viewDidAppear:
    
    查看
    视图willlayoutsubviews
    /
    viewdillayoutsubviews
    调用两次的原因是,任何转换动画都发生在这两个视图之间

    我希望如果有动画,状态栏的消失也会被动画化,这可能是调用
    preferssStatusBarHidden
    的原因

    因此,无论您想在
    viewdiload
    中执行什么操作,都更适合于
    viewWillLayoutSubviews
    viewdillayoutsubviews


    我使用了以下代码:

    我认为您对通话顺序没有任何影响。你要那个订单干什么?你不能保证先叫哪个。我需要这个。在设置视图之前,我正在设置一些视图。我希望状态栏被隐藏。这是一个动画应用程序。使用状态栏时,初始化会出现一些设计失真。您知道,当viewcontroller出现在屏幕上时,状态栏将被隐藏。这难道不足以让你在设置动画时牢记这一点吗?事实上它不是这样的。首先是视图,然后状态栏被隐藏。奇怪的是,由于断点,viewDidLoad在PreferencesStatusBarHidden之前被调用。这就是我要反对的。你确定它是同一个viewController吗?你能检查stacktrace它们是否不是从其他地方手动调用的吗?是的,它是同一个视图控制器。你已经验证它们不是手动调用的吗?与视图控制器或其显示方式不同的任何其他内容?