私のアプリでSideMenu 2.3.4を使用し、v3.1.4にアップグレードしました。私は、APIの変更に適応するために必要ないくつかの改造を行った後、私のアプリを走った - それは、次のUIの操作後に墜落:iOS SideMenu v3.1.4がライフサイクルメソッドを順番通りに呼び出す
- オープンナビゲーションバーのボタンの上に別のものをロードする項目の
- タップをタップしてメニューアプリがクラッシュする前に、ビュー(メニューが閉じ、新しいビューが表示されます)、再びメニューを開くにはナビゲーションバーのボタン上
- タップ
メニューは、その最後のタップに反応して開くことができませんでした。デバッガの下で、私は2の後にviewDidLoad、次にviewWillAppearがその新しいビューのために呼び出されたことがわかりました。 3の後、同じビューのviewWillDisappear、viewDidDisappear、viewWillAppearが呼び出されました。
viewWillAppearでクラッシュしました。なぜなら、viewDidLoadのコードは、viewDidDisAppearの後に呼び出される最初のものであるからです。 AFAIK、viewDidDisappearは他のライフサイクルメソッドが呼び出される前にビューが閉じられていて、viewDidLoadが呼び出されなければならないことを意味すると考えられているので、それをカウントするのが正当です。つまり、viewWillAppearが呼び出されてはいけませんviewDidLoad。
iOSビューのライフサイクルを誤解していますか?これはSideMenu 3.1.4のバグですか?
おかげで、
マーク
ビューコントローラがメモリから削除されているかどうかを判断するために、いくつかのコードを 'dealloc'メソッドに追加することをお勧めします。まだメモリに残っている場合は、ビューがもう画面には表示されないので、 'viewDidLoad'は再び呼び出されません。 (Swift Deallocについては、https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Deinitialization.html#//apple_ref/doc/uid/TP40014097-CH19を参照してください) – JMFR