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函数何时、何人、何地在数据库中创建的信息?