iOS SideMenu v3.1.4不按顺序调用生命周期方法

时间:2017-11-07 23:14:35

标签: ios swift

我在我的应用中成功使用了SideMenu 2.3.4,然后升级到v3.1.4。我做了一些调整到API更改所需的mod,然后运行我的应用程序 - 它在以下UI操作后崩溃:

  1. 点击导航栏按钮
  2. 打开菜单
  3. 点击加载其他视图的项目(菜单关闭,出现新视图)
  4. 点击导航栏按钮再次打开菜单
  5. 在应用程序崩溃之前,菜单未响应最后一次点击而打开。在调试器下,我看到在2之后,viewDidLoad然后为该新视图调用了viewWillAppear。 3之后,调用了相同视图的viewWillDisappear,viewDidDisappear和viewWillAppear,所有这些都没有在显示中进行任何更改。

    崩溃发生在viewWillAppear中,因为我的代码依赖于viewDidLoad,这是在viewDidDisappear之后调用的第一个东西。 AFAIK,合理的是,因为viewDidDisappear应该意味着视图被关闭,因此必须重新加载并且在调用任何其他生命周期方法之前调用viewDidLoad,即之前不应该调用viewWillAppear viewDidLoad中。

    我是否误解了iOS视图的生命周期?这是SideMenu 3.1.4中的错误吗?

    谢谢,

    标记

1 个答案:

答案 0 :(得分:0)

仔细阅读网上的文档和文章表明我确实误解了生命周期方法。

viewDidLoad没有反面(例如,viewDidUnload),但在viewDidDisappear中可以这样做:

if (isBeingDismissed || isMovingFromParentViewController) {
    // Do something - viewWillAppear will NOT be called before viewDidLoad.
}

这消除了我所看到的崩溃。

标记