簡體   English   中英

在 viewDidLoad 中加載數據是否太晚而無法在 UIViewController 中顯示?

[英]Is loading data in viewDidLoad too late to display it in a UIViewController?

使用 UIViewController 時,您通常在哪里加載數據?

當我說“加載數據”時,我的意思是:API 調用來獲取它及其操作。

您是在視圖controller初始化程序中加載它,還是在初始化它之前加載它並通過它? 還是將代碼添加到 viewDidLoad?

另外,rootViewController 的數據呢? 啟動應用程序時從 storyboard 初始化的那個?

您是在視圖controller初始化程序中加載它,還是在初始化它之前加載它並通過它? 還是將代碼添加到 viewDidLoad?

通常這是在 MVC 中完成的 inisde viewDidLoad ex,您調用 controller 來加載數據並刷新 vc 的內容,如表/集合,關於發送數據的情況,這稱為依賴注入

另外,rootViewController 的數據呢?

rootViewController與任何其他 vc 相同

首先,如果您的應用程序不是很簡單,我建議不要在 ViewController 中使用數據加載代碼。 最好將它放在單獨的 class 中。 查看 MVP 或 VIPER 設計模式以獲取更多信息。

至於何時加載數據(在視圖加載之后或之前)更多的是用戶體驗決定。 當然,如果你在加載之后開始加載,屏幕可能會暫時空着,最好在屏幕上有一些加載指示器,這樣用戶就不會感到困惑。 用戶是否會經常看到空白屏幕取決於您是否永久存儲加載的數據(在本地數據庫中),是否有一些運行時緩存,或者沒有。 如果你有一些緩存,空屏幕只會顯示一次,因為如果數據被加載和緩存,你將顯示它並在收到新數據后更新屏幕。

您還可以在加載視圖之前(在 loadView() 中)開始加載數據,或者可以為不可見的視圖加載一些最小數據(以便在打開時它們不完全為空),然后在加載視圖后加載完整數據。

您選擇的任何方法都高度依賴於您想要提供什么樣的用戶體驗,以及加載數據需要多長時間。

一行中的答案是 viewididload 但下面是實際的結構方法。

所以對於這個你可以有多個答案,這些天最流行的答案是使用 MVC/MVVM。 所以讓我們討論一下帶有委托/協議的 MVVM

Model - 您的數據。

查看 model - 在這里初始化/修改/處理您的數據。

Viewcontroller - viewdidload - 在這里您可以初始化您的視圖 model 並在委托協議機制的幫助下與視圖 model 提供的數據進行交互。

暫無
暫無

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

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