如果不在 viewDidLoad 中,我应该在哪里进行初始网络调用(例如,最初填充提要)?

Posted

技术标签:

【中文标题】如果不在 viewDidLoad 中,我应该在哪里进行初始网络调用(例如,最初填充提要)?【英文标题】:If not in viewDidLoad, where should I make initial network calls (say, to initially populate a feed)? 【发布时间】:2016-08-12 02:38:16 【问题描述】:

之前,在设置完所有视图之后,我进行了初始网络调用以填充viewDidLoad 中的用户提要。

但是,使用 ios 的状态恢复机制,这不起作用,因为状态恢复是在 之后 viewDidLoad 执行的,所以如果我想阻止调用,因为数据已经存在从恢复中填充,我不能,因为只有在 viewDidLoad 之后才知道。

那么我应该在哪里进行初始网络调用等? viewDidAppear 似乎是错误的,因为每次您从被调用的导航控制器堆栈中导航回来。我可以设置一个标志,表明初始调用已经完成,但这似乎有点恶心。

典型的建议似乎是一次性完成in viewDidLoad, not viewDidAppear,这就是我担心的原因。

这里有建议的策略吗?

【问题讨论】:

【参考方案1】:

可以在UIApplicationDelegate的delegate方法中设置flag,然后在Controller的viewDidLoad中使用吗?

【讨论】:

以上是关于如果不在 viewDidLoad 中,我应该在哪里进行初始网络调用(例如,最初填充提要)?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在哪里从 UIViewController 中的 firebase 加载数据

如果 Mat 对象不在 data 变量中,它会将其数据存储在哪里?

在 viewDidLoad 中添加子视图有奇怪的行为 [重复]

iOS - 在哪里初始化视图

在自定义tableviewcells中添加约束的最佳位置在哪里?

子菜单不在WordPress下拉菜单中复制样式