Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UINavigationBar在iOS 7中神秘消失_Ios_Objective C_Ios7 - Fatal编程技术网

UINavigationBar在iOS 7中神秘消失

UINavigationBar在iOS 7中神秘消失,ios,objective-c,ios7,Ios,Objective C,Ios7,我用Xcode 4启动了一个项目,今天我将我的Xcode更新为5。在iOS7模拟器中运行同一个项目揭示了一些有趣(也令人沮丧)的问题 因此,我的应用程序有一个侧边栏,用户可以点击,根据他们点击的按钮,我将使用以下代码实例化一个新的VC YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC

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

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

YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC"];
[self.navigationController pushViewController:generalInfoTableVC animated:YES];
然后用下面的代码将这个新VC推到nav堆栈上

YMGeneralInfoTableViewController *generalInfoTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"generalInfoTableVC"];
[self.navigationController pushViewController:generalInfoTableVC animated:YES];
在iOS 6中,一切正常。然而,在iOS7中,导航条神奇地消失了

这是推新VC之前的屏幕截图

推完之后,这里是:

正如您所看到的,在内容的开始位置和状态栏之间存在一个间隙,即导航栏应该位于的位置

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

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


但是,方法
setHideNavigationBar:NO-Animated:NO
也没有将导航栏带回来。有人知道发生了什么吗?

签出自动布局约束


我也尝试过使用iOS 6和iOS 7,我的导航栏显示。仍然签出Autolayout约束,我在没有Autolayout的情况下不签,顺便说一下,我已经找到了解决方案

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

因此,我建议您首先检查设备操作系统,然后再为导航栏设置自定义外观

- (BOOL)isOS7
{
    float currentVersion = 7.0;

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

    return YES;
}
-(BOOL)isOS7
{
float currentVersion=7.0;
如果([[[UIDevice currentDevice]systemVersion]floatValue]

因此,如果返回“否”,那么只有您尽可能地使用

这些屏幕截图应该被切断,还是直接来自模拟器?是的,对不起,我只捕获了模拟器的一部分,所以是的,它们应该被切断。哦,好的,我几乎看不到导航栏上的对比,想知道我还遗漏了什么。我现在明白了。是的,很抱歉。实际上,我找到了一个临时解决方案,它只涉及设置导航栏。半透明=否。但这也会导致其他问题,例如,我的自定义菜单图标没有显示。请尝试切换导航栏的半透明性。self.navigationController.navigationBar.translucent=否;//是的,我已经禁用了autolayout,但它仍然以这种方式运行。