【问题标题】:UITabBarController's viewControllers, the second one is loaded before the first oneUITabBarController的viewControllers,第二个在第一个之前加载
【发布时间】:2016-10-19 08:09:16
【问题描述】:

我正在使用一个应用程序,它的 rootViewController 是 UITabBarController。我为 UITabBarController's viewController 分配了 NewsViewController(index = 0)、MusicViewController(index = 1) 和 WeatherViewController(index = 2)。

这个应用程序似乎工作正常。但是,当应用程序启动时,我注意到 MusicViewController 的 viewDidLoad 方法在 NewsViewController 的 viewDidLoad、viewWillAppear 和 viewDidAppear 方法之前被调用。从我的角度来看,应该只调用 NewsViewController 的生命周期方法。

我只是不明白为什么在启动应用程序时会调用 MusicViewController(index = 1) 的 viewDidLoad 方法。

感谢您提供任何信息。

【问题讨论】:

  • 你如何将视图分配给标签栏,我的意思是通过编程或情节提要?
  • @dreamBegin 我使用故事板。

标签: ios objective-c uitabbarcontroller


【解决方案1】:

当您使用UITabBarViewController 时,请记住:

首先会加载UITabBarViewController,然后它会从您站立的位置加载前 3 个视图控制器。

例如,如果您在索引 0 中,它将在索引 0、1、2 中加载视图控制器。

然后当您转到索引 1 时,它将在 1、2、3 中加载视图控制器,依此类推。

`UITabBarViewController 现在如何与您合作是它的正常行为。

希望这个答案是你的问题。

【讨论】:

  • 我创建了另一个带有 3 个 tabItems 的选项卡式应用程序。对于这个应用程序,仅加载索引 0 中的第一个视图控制器。所以我认为情况可能并非总是如此。
  • 已修复?我也有同样的问题
【解决方案2】:

可能是因为您已将音乐视图设置为初始视图控制器,请尝试以下操作:-

选择了新闻视图控制器:-

使新闻视图成为初始视图控制器:-

【讨论】:

  • 感谢您的信息。但 UITabBarController 应该是“初始视图控制器”,因为它是设置应用程序的根视图控制器。 NewsViewController 是我想展示的第一个视图,除了我上面提到的问题之外,该应用看起来与预期的一样。
  • 当你将新闻视图设置为初始视图控制器标签栏将自动分配为根视图控制器尝试它。
  • 我试过但失败了,如果我将 NewsViewController 设置为'Initial View Controller',UITabBarController 将不会被加载显示。我理解正确吗?
  • 在 Xcode 7.2 中对我来说工作正常
猜你喜欢
  • 2016-12-13
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多