故事板应用程序中的导航按钮丢失
Posted
技术标签:
【中文标题】故事板应用程序中的导航按钮丢失【英文标题】:Navigation Buttons Lost in Storyboard App 【发布时间】:2014-12-22 11:02:52 【问题描述】:我正在尝试调试使用 Storyboards 的 ios 应用程序。首次显示问题场景时,它是正确的,如下所示:
当我通过点击“任何类别”等按钮之一导航到下一个场景然后再次导航时,导航按钮如下所示:
我无法找到导致这种变化的明显原因。我应该特别寻找可能会修改导航栏的东西吗?也许故事板进程有一些自动处理需要禁用?
这是提供上下文的故事板的一部分:
我还发现,如果我在导航栏和 segue 处理代码中显式添加后退按钮,它确实可以工作,但没有显示 V 形表示它导航回来。
viewDidLoad 中添加的代码:
UIBarButtonItem *backBtnItem = [[UIBarButtonItem alloc] initWithTitle:backArrowString style:UIBarButtonItemStylePlain target:self action:@selector(backBtnClicked:)];
self.navigationItem.leftBarButtonItem = backBtnItem;
self.navigationItem.leftBarButtonItem.enabled = YES;
及相关操作:
-(IBAction)backBtnClicked:(id)sender
[self.navigationController popViewControllerAnimated:YES];
【问题讨论】:
你使用的是什么 Segue 类型? [self.navigationController.viewControllers count] 检查计数是否大于0 第一个屏幕上的后退按钮通向哪里?故事板的图片可能会有用。 @Raghav [self.navigationController.viewControllers count] 返回 2 @Crazyrems 添加了故事板和转场截图。 【参考方案1】:可能发生的是按钮导航到的视图控制器破坏了导航堆栈;应用程序在按下“任何类别”后转到的目标视图控制器正在以非标准方式使用导航控制器。
看看目标视图控制器。如果它旨在与导航控制器系统一起正常工作,则不应推送、弹出、segue-ing 或启动任何其他形式的导航本身。
目标视图控制器做什么?
【讨论】:
两个视图控制器都使用 performSegueWithIdentifier 从其 uiscrollview 的内容导航到下一个视图。调查你的理论,我从目标视图控制器中撕掉了几乎所有的代码,导航栏开始正常运行!但是,我已将其追踪到在目标控制器中返回 YES 的 prefersStatusBarHidden。删除后,导航将正常工作。我不确定这是否只是您概述的问题的另一个症状?在滚动视图中处理导航的正确方法是什么? 什么动作启动导航?它是在点击滚动视图内的视图吗?您可以使用 performSegueWithIdentifer 前进,但您需要使用 [self.navigationController popViewController] 后退。后退导航目前是如何处理的? 是的,在滚动视图中点击前进,它使用 popViewControllerAnimated 返回。看来应该没问题。我会接受这个答案,因为它是最有帮助的,尽管我仍然不明白根本原因。 您可以尝试通过only 使用导航栏中的后退按钮并禁用调用popViewController 的任何内容来简化导航。这会稍微改变用户体验,但可能会更加一致。以上是关于故事板应用程序中的导航按钮丢失的主要内容,如果未能解决你的问题,请参考以下文章