5

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

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

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

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

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

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

这是推送新 VC 之前的屏幕截图 在此处输入图像描述

推后是这样的: 在此处输入图像描述

正如你所看到的,在内容开始的位置和状态栏之间有一个间隙,在导航栏应该在的位置。

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

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

但是,该方法setHideNavigationBar:NO Animated:NO也没有带回导航栏。有谁知道发生了什么?

4

2 回答 2

1

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

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

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

- (BOOL)isOS7
{
    float currentVersion = 7.0;

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

    return YES;
}

所以如果返回“NO”那么只有你做任何可能的事情

于 2013-10-04T03:59:33.730 回答
0

结帐自动布局约束,

我已经尝试过使用 iOS 6 和 iOS 7,我的导航栏正在显示。仍然结帐自动布局约束,我没有自动布局就完成了

于 2013-09-23T13:05:00.167 回答