簡體   English   中英

IOS中的viewDidLoad vs ViewWillAppear

[英]viewDidLoad vs ViewWillAppear in IOS

請幫我解決一下這個。 我創建了一個帶有兩個視圖的簡單項目,如圖所示。 我已經為我的故事板和快速文件附加了圖像。 所以,我讀到在將視圖加載到內存時,viewdidload只會被執行一次。 但是,當我從第二個視圖轉換到第一個視圖時,viewdidload再次執行,viewdidload方法中的print語句也是如此。

有人請解釋我這個。 在此輸入圖像描述 在此輸入圖像描述

對於Application,不會調用viewDidLoad一次。 當視圖保存內存並加載時,會為該viewController調用一次。

因此,當您推送到viewController的時間很多時,它會多次調用viewDidLoad

  • viewDidLoad() - 在創建和加載視圖控制器的內容視圖(其視圖層次結構的頂部viewDidLoad()調用

  • viewWillAppear() - 用於在視圖變為可見之前始終要執行的任何操作。

有關此內容的詳細信息,請訪問以下鏈接: https//developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.html

因此,如果視圖已經在內存中(就像你的情況一樣),則無需再次推送,只需要通過此代碼彈出即可

self.navigationController?.popViewControllerAnimated(true)

你不應該從secondViewController過渡到firstViewController 通過此代碼彈出第二個視圖控制器:

self.navigationController?.popViewControllerAnimated(true)

當你進行轉換時,它會從你的firstViewController創建一個新實例,但是當你彈出第二個視圖控制器時,它會關閉你的secondViewController並再次顯示你上次查看的viewController。

要么

如果您沒有使用navigationController您應該使用下面的代碼來關閉您的secondViewController

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

重點是你不應該使用新的過渡。

最簡單的方法:

1.首先在ViewController中嵌入ViewController

2.呼吁這(而不是創建segue支持)

navigationController?.popToRootViewController(animated: true)

viewDidLoad只會被調用一次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM