【问题标题】:Navigation Controller jumping over a view Controller导航控制器跳过视图控制器
【发布时间】:2012-09-08 15:55:10
【问题描述】:

我有 3 个视图控制器,其中我必须通过第二个控制器从第一个到第三个,而不查看第二个控制器。 第二个控制器有一个按钮,它执行 segue 控制器 2--> 控制器 3。

我试过了

[self performSegueWithIdentifier:@"addItem" sender:self ];

在第二个控制器的 viewDidLoad 中。 但是,不是继续到第三个控制器,而是去一个未知的控制器。在终端显示一条消息。嵌套推送动画可能导致导航栏损坏。在意外状态下完成导航转换。导航栏子视图树可能会损坏。当我按下那个未知控制器上的后退按钮时,它会回到我的预期目的地(第三个控制器)并且从那里运行良好。

【问题讨论】:

  • 为什么不直接转到控制器 1--> 控制器 3?
  • 我需要通过第二个控制器,因为当我调用后退按钮时它应该转到第二个。第二个有一个与 3rd 相连的按钮。所以如果我将第三个推到第二个而不是弹出它会创建一个无限循环的堆叠对象。
  • 正如你提到的“我需要通过第二个控制器因为当我调用后退按钮时它应该转到第二个”,好吧可以说你的代码工作正常但是当你点击后退按钮时,viewWillAppear将再次将其称为您的第二个控制器,该控制器将再次对第三个控制器执行 segue
  • 你如何在第三个控制器中执行 seguing?
  • 在将其放入视图后确实 load ,我在终端中收到以下警告。嵌套推送动画可能导致导航栏损坏。在意外状态下完成导航转换。导航栏子视图树可能会损坏。 (我没有在第三个控制器中的任何地方进行搜索。它是我导航树中的最后一个控制器)

标签: objective-c ios5 uinavigationcontroller


【解决方案1】:

得到答案。为此,我们需要在

中将一个动画设置为“否”
pushViewController: animated:NO .
This prevents nested push animation 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2015-02-10
    相关资源
    最近更新 更多