【发布时间】:2018-04-20 12:09:30
【问题描述】:
我在我的应用程序中成功使用 SideMenu 2.3.4,然后升级到 v3.1.4。我做了一些调整以适应 API 更改所需的模块,然后运行我的应用程序 - 它在以下 UI 操作后崩溃:
- 点击导航栏按钮打开菜单
- 点击加载另一个视图的项目(菜单关闭,新视图出现)
- 点击导航栏按钮再次打开菜单
在应用崩溃之前,菜单没有响应最后一次点击而打开。在调试器下,我看到在 2 之后,为该新视图调用了 viewDidLoad 然后 viewWillAppear。 3 之后,调用了同一个视图的viewWillDisappear、viewDidDisappear 和viewWillAppear,显示没有任何变化。
崩溃发生在 viewWillAppear 中,因为我的代码认为 viewDidLoad 是在 viewDidDisappear 之后调用的第一件事。 AFAIK,依靠它是合法的,因为 viewDidDisappear 应该意味着视图已关闭,因此必须重新加载并在调用任何其他生命周期方法之前调用 viewDidLoad ,即之前不应调用 viewWillAppear viewDidLoad。
我是否误解了 iOS 视图生命周期?这是 SideMenu 3.1.4 中的错误吗?
谢谢,
标记
【问题讨论】:
-
您可以考虑在
dealloc方法中添加一些代码,以确定您的视图控制器是否正在从内存中删除。如果它仍在内存中,则不会再次调用viewDidLoad,因为视图已“加载”,只是不再显示在屏幕上。 (此处记录了 Swift Dealloc:developer.apple.com/library/content/documentation/Swift/…)