5

私は自分のアプリで SWRevealViewController を使用しています (スライド アウト サイド パネルを取得するため) が、ユーザーが「設定」などの別の viewController に移動して戻ってくるたびに、すべてがリセットされます。新しい VC がインスタンス化され、毎回 viewDidLoad が呼び出されるため、これはストーリーボードの通常の動作であることを理解しています。AppDelegate の配列に VC を格納してから元の viewController に戻ることで、これを回避しようとしました。 veiwcontrollerの、すべてのプロパティのリセットなど..調査の際、Appleのドキュメントには、viewDidLoadが1回だけ呼び出されると想定しないと書かれています。

この動作は、タブを切り替えるときに UITabBarController で明らかですか? SWRevealViewController を捨てて、頭痛が軽減される場合は代わりにそれを使用することを考えています。

これを別の方法で処理する必要がありますか。「状態」を NSUserDefaults に保存し、viewDidLoad で復元しますか?

前もって感謝します。

4

2 に答える 2

8

viewDidLoadUIViewControllerが最初にメモリにロードされるときに、一度だけ呼び出されます。これは、インスタンス変数をインスタンス化しUIViews、 this のライフサイクル全体にわたって存続するものを構築する場所ですUIViewController

またUITabBarController、タブを切り替えるときにviewdidLoadforが一度呼び出されます。UIViewController

于 2013-10-10T09:47:28.587 に答える
2

viewDidLoad()メソッドは一度だけ呼び出されます。サイクルの不可欠な部分です。

それが呼び出され、それぞれUIViewControllerのクラスがメモリにロードされます。

はい、プロパティを初期化するか、 にアクセスして変更する場合はNSUserDefaults、メソッドで実行できますし、実行する必要がありますviewDidLoad

UIViewControllersアプリに関しては、ユーザーが異なるを切り替えるたびに、viewDidLoadすべての宛先に対してメソッドが呼び出されますUIViewController

また、正しく指摘されているように、メモリ警告の場合にも呼び出されます。

于 2013-10-10T09:53:04.727 に答える