iOS 7上的推送序列未显示导航栏
我在一个视图控制器和另一个视图控制器之间有一个推送序列。当从操作表中选择某个选项时,将执行该步骤并显示视图。我根据创建了segue 在iOS 8上,这可以正常工作。视图将添加到导航控制器,并自动显示“后退”按钮。然而,在iOS 7上,我刚刚注意到视图显示为模态,根本不显示导航栏。我不知道这是什么时候开始的,但我似乎不知道为什么 按下操作表项时,我使用:iOS 7上的推送序列未显示导航栏,ios,objective-c,iphone,uinavigationcontroller,Ios,Objective C,Iphone,Uinavigationcontroller,我在一个视图控制器和另一个视图控制器之间有一个推送序列。当从操作表中选择某个选项时,将执行该步骤并显示视图。我根据创建了segue 在iOS 8上,这可以正常工作。视图将添加到导航控制器,并自动显示“后退”按钮。然而,在iOS 7上,我刚刚注意到视图显示为模态,根本不显示导航栏。我不知道这是什么时候开始的,但我似乎不知道为什么 按下操作表项时,我使用: [self performSegueWithIdentifier:@"showRouteInformationFromMap" sender:n
[self performSegueWithIdentifier:@"showRouteInformationFromMap" sender:nil];
给赛格打电话。我使用以下方法准备segue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showRouteInformationFromMap"]) {
[[segue destinationViewController] setRouteInfo:selectedRouteID];
}
}
它只在目标控制器上分配一个值。我不会对任一视图控制器上的导航栏进行任何更改。2种解决方法 iOS 8中引入了show segue,因此在iOS 7中出现意外行为是意料之中的 第一个解决方法: 手动按下控制器
UIViewController *myController = [self.storyBoard.instantiateViewControllerWithIdentifier:@"storyboardIdentifier"];
self.navigationController pushViewController:myController animated:YES];
第二种解决方法:
使用故事板
断开显示序列,然后重试
连接推送序列(显示为已弃用)。尝试删除情节提要中的序列,然后再次创建序列。这种方法在iOS 10中对我很有效。这里有点暗中操作,但是iOS 8中添加了iOS 7中没有的Segue。你在故事板中定义了什么类型的segue?不知道您是否选择了仅限iOS 8的segue,但由于该segue类型不存在,它会退回到iOS 7上的模式segue。根据interface builder,segue类型为“Show(例如Push)”。我有另一个片段,使用完全相同的方法显示,但很有效。是的,那应该不是问题。刚才注意到您的prepareforsgue:method调用在if子句中的segue标识符与在操作表调用中定义的segue标识符不同。我不确定这是否影响了你。对不起,那是个错误。k,其他人可能比我更能帮助你。我需要看看故事板是如何连接起来的,以及视图控制器中的不同属性,以验证一切都是它应该的样子。哈哈,多疯狂的bug啊。似乎如果您创建一个Show detail segue,然后将其类型更改为Show(Push),它将不会显示导航栏。这就是为什么你需要重新创建它。然后它就成功了!