iOS 何时何地为视图控制器获取服务器数据

Posted

技术标签:

【中文标题】iOS 何时何地为视图控制器获取服务器数据【英文标题】:iOS where and when to fetch server data for view controller 【发布时间】:2013-04-03 02:03:58 【问题描述】:

我有一个视图控制器,它需要显示从服务器提取的数据。

通常我通过服务器 api 适配器单例从这个视图控制器中加载我需要的数据。

但最近我一直在想,也许最好从 VC 外部加载数据,然后在有新数据可用时告诉 VC。这样 VC 不依赖于服务器获取代码。

或者换句话说:

现在

    介绍 VC 在 VC 的 viewDidLoad 中调用服务器 api 单例并获取数据

另类

    调用服务器 api 单例并获取数据 介绍 VC 服务器数据准备好后,告诉VC并传入数据

根据您的经验,哪种方法更好,为什么?还有其他方法吗?

【问题讨论】:

【参考方案1】:

我的基本流程,效果很好。

- (void)viewDidLoad

    //some code
    [self loadAPIData]



-(void)viewWillDisappear:(BOOL)animated

    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 
        //cancel api operation
    


-(void) loadAPIData

    //Call Api and show UIActivityIndicatorView

【讨论】:

是的,这也是我目前使用的流程。我只是想知道从外部加载数据是否会更好。【参考方案2】:

我更喜欢先呈现 viewController,然后获取数据,最后在 viewController 上显示数据。在获取数据时,您可以在 VC 上放置加载状态 HUD,用户始终知道您的应用正在运行。

你的第二种方式有一个问题,先获取数据,然后呈现VC,如果获取数据失败,用户的触摸/点击动作将无效,用户可能会认为你的应用程序不工作。这是一种糟糕的用户体验。

【讨论】:

用户体验是一样的,因为用户看到视图控制器出现,然后需要等待内容加载。但你是对的,如果从外部加载,那么进度更难传达,所以看起来第一种方法更有意义。

以上是关于iOS 何时何地为视图控制器获取服务器数据的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 的 main() 方法何时/何地从 Android 和 iOS 端调用?

如何查看greenplum函数何时、何人、何地在数据库中创建的信息?

选择何时何地在本地保存数据[关闭]

BaseHTTPServer和SimpleHTTPServer有什么区别?何时何地使用它们?

Twig 渲染与包含 - 何时何地使用其中一个?

IOS 查看代表以及何时调用它们