【问题标题】:My Navigation controller requires pressing back twice in iOS5?我的导航控制器需要在 iOS5 中按两次?
【发布时间】:2011-11-02 01:35:49
【问题描述】:

我在故事板中有一个导航控制器,目前有两个屏幕。 Screen1 包含一个打开徽标和一些按钮,我使用以下方法隐藏了顶部的导航栏:

[[self navigationController] setNavigationBarHidden:YES];

viewDidLoadviewWillAppear: 中(在viewWillAppear 中我设置了动画:YES,所以当从其他屏幕返回时它会滑落)。

当我进入 Screen2 时,我有:

[[self navigationController] setNavigationBarHidden:NO animated:YES];

在第一个视图控制器的viewWillDisappear 中,当该视图到达导航堆栈的顶部时,导航栏会很好地滑入。

问题是,当我点击返回时,导航栏的动画离开屏幕右侧,但 Screen2 停留在那里,显示下方的另一个导航栏!

然后我可以再次点击返回,它将关闭 Screen2,主屏幕将返回,但这显然不是我想传递给任何用户的行为!

以前有人遇到过这个问题,或者对可能的罪魁祸首有什么看法?

编辑:我刚刚发现运行 iOS 模拟器时出现错误:

2011-11-02 19:29:13.548 TestHTML5[10261:f803] Unbalanced calls to begin/end appearance transitions for <LessonViewController: 0x6c5e960>.

当我单击按钮转到第二个视图 (LessonViewController) 时会发生这种情况。 希望这可能是破解这个问题的方法,有人知道吗?

【问题讨论】:

  • 我在我的应用程序中调用动画 uinavigaitionbars。你试过只使用 viewWillAppear 吗?您的代码是正确的,但我的预感(为什么我不作为答案发布)是,当您调用它两次时,它实际上会生成 2 个导航栏!所以删除viewDidLoad中的那个,重新运行。
  • @CodaFi 就像你说的那样,刚刚尝试过,但并没有什么不同。然而,这确实意味着当应用程序最初加载时,导航栏出现在屏幕上,然后立即滑回。在第一次加载时,我的目标不是很明显我回来时的主屏幕。感谢您的回复:)
  • 好的,试试这个:在我的应用程序中,我在任何其他控制器中都没有导航栏动画,但是让它消失的那个(即,控制器 A 什么都不做,控制器 B 制作动画发生)所以在你的控制器 B 中,把它放在 viewWillAppear: [self.navigationController setNavigationBarHidden:YES animated:YES];这在 viewWillDisappear: [self.navigationController setNavigationBarHidden:NO animated:animated];
  • 好的,试一试,但不幸的是,这对情况没有任何影响。当我点击每个新视图并且仍然需要点击两次时,我仍然会得到2011-11-02 19:29:13.548 TestHTML5[10261:f803] Unbalanced calls to begin/end appearance transitions for &lt;LessonViewController: 0x6c5e960&gt;.:/
  • 好的,现在将它们重新添加进来,一次一个。首先在第二个视图控制器的 viewWillAppear 中添加隐藏它的那个。尝试推动,退出。如果成功,则在 viewWillDisappear 方法中添加显示方法。

标签: iphone ios uinavigationcontroller navigation uinavigationbar


【解决方案1】:

我找到了我的 IBActions,其中包含:

SecondViewController *X = [self.storyboard instantiateViewControllerWithIdentifier:@"X"];
[self.navigationController pushViewController:X animated:NO];

每个都导致视图加倍或类似的东西。当我在每个 IBAction 中注释掉这两行时,问题就消失了。

非常感谢@CodaFi 帮助我解决了这个问题,老实说,这个解决方案对我来说没有意义,即使我认为我可以看到它在这里工作。

【讨论】:

  • 你好!祝你好运。
猜你喜欢
  • 2016-02-16
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多