【问题标题】:Corrupted UINavigationController with embedded UITabBarController带有嵌入式 UITabBarController 的损坏的 UINavigationController
【发布时间】:2013-12-18 20:56:18
【问题描述】:

我的应用基于UINavigationController。在某些屏幕上,我嵌入了UITabBarController。当我进入带有标签栏的屏幕时,在第一个标签上一切正常。 (每个选项卡都是一个UITableViewController)我可以点击表格视图的一个单元格,通过正确地将其推到我的导航控制器上,它会将我带到下一页。如果我转到另一个选项卡,它会很好地加载表格视图,但如果我点击一个单元格将我带到另一个视图,我会收到此错误:

Nested push animation can result in corrupted navigation bar
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

它会推动下一页,但如果我尝试按下导航栏上的后退按钮,应用程序将崩溃。

我该如何解决这个问题?我查看了对类似问题的多个其他回复,但没有一个对我有帮助。

【问题讨论】:

  • 根据 Apple 的文档,您不应该在导航控制器中嵌入标签栏控制器,否则设计选择可能不起作用。

标签: ios iphone uitableview uinavigationcontroller uitabbarcontroller


【解决方案1】:

如果您分享您的代码,那将非常有帮助。 但是,这可能对您有所帮助:

在使用标签栏时,您应该尝试每个标签都有自己的导航控制器,并使用单独的导航控制器移动到特定标签的特定视图控制器。我知道这样很难理解..

例如,在 app del 你有你的主导航控制器,你可以使用它推送到下一个视图控制器,比如“SecondViewController”。

现在第二个有一个带有 4 个标签 tab1、tab2、tab3、tab4 的标签栏。现在每个选项卡都可以有任何与之关联的视图控制器。例如,在 tab1 上,您移动到另一个屏幕,然后再从那里移动到下一个屏幕,依此类推。

所以要管理它们,应该有单独的导航控制器,例如,tab1nav,tab2nav,tab3nav,tab4nav。

 tabBarController.viewControllers = [NSArray arrayWithObjects:"tab1nav".....and so on all nav, nil];

现在,根据您所在的选项卡,使用该选项卡的导航控制器移动到该选项卡的下一个屏幕或返回。

【讨论】:

    【解决方案2】:

    如果你有viewDidAppear功能,

    记得把[super viewDidAppear:animated];放在函数里面。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2018-06-11
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2012-07-04
      相关资源
      最近更新 更多