2016-10-24 9 views
3

これを手伝ってください。私は、2つのビューを持つ単純なプロジェクトを作成しました。私は、私のストーリーボードと迅速なファイルの画像を添付しました。だから、viewdidloadはメモリにビューをロードしている間に一度だけ実行されることを読んでいます。しかし、私がsecondviewから最初のビューに移行するとき、viewdidloadは再び実行され、viewdidloadメソッドのprintステートメントも実行されます。viewDidLoadとIOSのViewWillAppear

誰か教えてください。 enter image description hereenter image description here

+0

カウント/ 2は、応答のための0 – Dasem

答えて

6

viewDidLoadはアプリケーションでは一度も呼び出されません。ビューがメモリを保持してロードされると、そのviewControllerに対して一度呼び出されます。

あなたがのViewControllerにプッシュ時間のの

ように多くの数は、何倍ということは、呼び出しますviewDidLoad

  • viewDidLoad() - 呼び出されたときに、View Controllerのコンテンツビュー(そのビュー階層の最上位 )

  • viewWillAppear() - ビューが表示される前に常に にする操作を意図しています。

    リンクでこの外観についての詳細情報については

:だからhttps://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html

ビューは、(あなたのケースのように)、メモリ内に既にある場合は、再びプッシュする必要はありませんそして、これだけで戻ってポップする必要がありますコード

self.navigationController?.popViewControllerAnimated(true) 
+0

おかげでinisilizedする必要があります。あなたは例を挙げてそれを説明してください、また、私たちが別のものへの移行を行うと、ViewControllerのオブジェクトはメモリから削除されますか? – Swifty

+0

はい、viewControllerからポップバックすると、viewControllerオブジェクトのメモリが削除されます。この例では、viewDidLoad、viewWillAppearでプロジェクトにブレークポイントを設定し、呼び出されるタイミングを確認します。 この方法でチェックすることができます。最初のVCで整数変数を10にしてから2番目のVCにプッシュし、次に2番目のVCにプッシュしてpopViewControllerメソッドを使用して最初のVCに戻り、表示される変数の値10、しかしあなたが押してあなたが同じVCに来る場合は、10を得ることはありません(それは0またはいくつかのランダムな値です)。続行するには.. – Janmenjaya

+0

これは、先に読み込まれた画面のビューが、同じものではないことを意味します。 または、私が説明したのと同じ方法でメインビューの背景色を入れてチェックして、画面のビューが同じか違うかを知ることができます。希望があれば、答えを受け入れて投票してください。 – Janmenjaya

1

secondViewControllerからfirstViewControllerへの移行は行わないでください。あなたはそれがあなたのfirstViewControllerから新しいインスタンスを作るが、あなたは2番目のビューコントローラをポップするとき、それはあなたのsecondViewControllerを閉じて、もう一度あなたの最後に表示したのViewControllerを示し遷移した場合

self.navigationController?.popViewControllerAnimated(true) 

:バックアップするには、このコードによって、第2のビューコントローラをポップ。

それともあなたがあなたのsecondViewController

self.dismissViewControllerAnimated(true, completion: {}); 

主なポイントは、あなたが戻ってのために新しいトランジションを使うべきではないということです却下したコードの下に使用する必要があるnavigationControllerを使用していない場合は

0

最も簡単な方法:

1.Firstが

をNavigationControllerであなたのViewControllerを埋め込みますこれに

2.Call

navigationController?.popToRootViewController(animated: true) 

のviewDidLoadは一度だけ呼び出されます(代わりの裏のためのセグエを作成する)

関連する問題