2016-09-30 3 views
0

私のアプリケーションには1つのビューコントローラと1つのビューがあります。 xcodeからシミュレータでアプリケーションを実行すると、アプリケーションがロードされ、viewDidLoadviewDidAppearの両方が期待通りに呼び出されます。iosシミュレータviewDidLoad、viewDid閉じるまたは終了後に呼び出されない

  1. 私は、シミュレータのホーム画面に移動して、アプリに戻ってきて、 私はviewDidLoadが呼び出されることを期待するが、そうではありません。

  2. 私はthese directionsに従うことによって アプリを終了していない、と私は両方のメソッドが呼び出されることを期待 、新鮮なアプリを再起動しますが、どちらもと呼ばれています。

これらのイベントがこれらの呼び出しをトリガーしない場合、それらの呼び出しをトリガーするのは何ですか? 実際のデバイスでは、初めてviewDidLoadが呼び出されるのは、アプリが初めて読み込まれたときだと思います。

答えて

3

「ロード」と表示されます。これは、文字通り、ビューコントローラがロード(インスタンス化)されたときに呼び出されることを意味します。また、「表示」は、その上にある他のView Controllerを押したり表示したりするようなときに呼び出されます。

あなたが望む事は()の通知を追加するには、View ControllerののviewDidLoadでは次の通知

static let UIApplicationWillEnterForeground: NSNotification.Name 
static let UIApplicationDidEnterBackground: NSNotification.Name 
static let UIApplicationDidBecomeActive: NSNotification.Name 

を登録しています。

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil) 

次に、アプリがバックグラウンドから再びアクティブになると、次のメソッドが呼び出されます。

func applicationDidBecomeActive() { 
    // Update your view controller 
} 

ケース2:あなたは、命令のようなアプリを終了すると

、デバッグセッションはとてもブレークポイントとログが機能していません終了します。あなたのアプリケーションを終了し、あなたのXcodeで再度実行する必要があるブレークポイントやログをチェックしたい場合。

+0

一度アプリをインストールすると、 'viewDidLoad'は一度だけ呼び出されますか? – lf215

+0

はい。それがインスタンス化され、すべてのプロパティがロードされるときに一度だけ呼び出されます。 –

+0

私の携帯電話をオフにして、それをオンにすると、アプリケーションを開くviewDidLoadをもう一度呼び出す必要がありますか?私はケース1を説明しているので、答えをアップアップしていますが、私はケース2の証明を理解していないので、ソリューションとしてまだ選択していません。 – lf215

関連する問題