![](/img/trans.png)
[英]Loading data on a UIViewController: viewDidLoad and viewWillAppear - What is the proper logic?
[英]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.