我刚刚开始使用从Web服务中提取数据,因此还有定时和异步操作的问题。我目前有一个IBAction,它既启动/处理JSON数据,又通过storyboard segue显示视图控制器。毫无疑问,在返回/处理数据之前,表VC已准备就绪。一个更好的选择可能是使用IBAction来获取/处理数据,然后从代码中启动segue,但作为一个学习过程,我很感兴趣,如果通过故事板有一个“首选”的方式来实现这一点并同步两个过程。
我一直在玩的一些想法可以使用,但感觉不对,是:
在获取新数据之前使数据源为空,然后在tableView中:numberOfRowsInSection执行一个讨厌的循环,检查是否存在有效的数据源。
执行类似于1但使用委托或通知在数据可用时警告tableView委托方法。这应该是有效的,但它仍然涉及一个不雅的等待循环
我确信必须有更好的方法来做到这一点,所以有人可以给我一些指示,以便我可以去研究它吗?
感谢。
答案 0 :(得分:0)
作为开发人员,您无法估计Web服务的响应时间(您也不应该)。因此,延迟tableview或其包含控制器的显示将使界面看起来没有响应。那不好。 Apple可能会认为您的应用已被破坏,并且不会批准您。
您需要显示一个' loading'尽快留言。一些策略:
将dataSource保持为null / 0项,直到加载数据。 UITableView
有一个名为backgroundView
的属性,您可以使用该属性显示可用于显示加载消息的属性。
你也可以隐藏UITableView
并在顶部显示UIActivityIndicatorview
,以便稍后在加载数据时隐藏(并且表格视图可见)