UINavigationBar在iOS 7中神秘地消失了

时间:2013-09-18 23:02:51

标签: ios objective-c ios7

我使用Xcode 4开始了一个项目,今天我将我的Xcode更新为5.在iOS7模拟器中运行相同的项目会发现一些有趣(也令人沮丧)的问题。

所以我的应用程序有一个用户可以点击的侧边栏,根据他们点击的按钮,我将使用此代码实例化一个新的VC

YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC"];

然后使用此代码将此新VC推送到导航堆栈

[self.navigationController pushViewController:generalInfoTableVC animated:YES];

在iOS 6中一切正常。但是,在iOS7中,导航栏神奇地消失了。

这是推送新VC之前的屏幕截图 enter image description here

推送之后: enter image description here

正如您所看到的,内容开始的位置与statusBar之间存在差距,位于navBar的位置。

我还在iOS 6设备上再次测试了这段代码,iOS 6设备上的一切都还可以。所以我不确定这里发生了什么。

此外,如果我尝试记录导航栏消失的控制器的navBar / navigationItem,我会得到对navBar的正确引用,这意味着它不是nil,而只是不显示。

然而,方法setHideNavigationBar:NO Animated:NO也没有带回navBar。有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:1)

顺便说一句,我找到了解决方案。

这是因为在AppDelegate中,您可能已经为导航栏设置了一些外观更改。

所以我建议您在为导航栏设置自定义外观之前先检查设备操作系统?

- (BOOL)isOS7
{
    float currentVersion = 7.0;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] < currentVersion)
        return NO;

    return YES;
}

因此,如果返回“NO”,那么只有你可以用于

的任何可能的事情

答案 1 :(得分:0)

结帐Autolayout约束,

我已经尝试使用iOS 6和iOS 7,我的导航栏正在显示。仍然签出Autolayout约束,我没有自动布局