iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Swift – 如何根据异步下载的数据创建表视图?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序从网上下载json,用引脚绘制地图并在表格视图中显示数据.

@H_359_5@map不是问题,因为我编写自定义函数来绘制地图并在dispatch_async之后立即调用它(dispatch_get_main_queue()行完美地运行 – map正在等待数据下载.但是,问题出现在我想要的时候对表视图执行相同操作.

我的代码很长,所以我将只展示简短的片段来了解问题的想法.

我尝试了以下修改

dispatch_async(dispatch_get_main_queue(),{ () -> Void in
                self.tableView.registerClass(UITableViewCell.self,forCellReusEIDentifier: "Cell")
                // Do any additional setup after loading the view,typically from a nib.
                self.tableView.BACkgroundColor = UIColor.clearColor();
                self.tableView.delegate = self;
                self.tableView.datasource = self;

但遗憾的是它无论如何都没有帮助 – 在下载数据之前,表视图再次加载,从而导致空表.

表视图使用自己的预定义函数,例如:

func tableView(tableView: UITableView,numberOfRowsInSection section: int) -> Int 
    func tableView(tableView: UITableView,cellForRowATindexPath indexPath: NSIndexPath) -> UITableViewCell

如果没有错误,将它们置于异步任务中是不可能的

我的问题是:如何处理这种东西(我的意思是当你想要一个元素如表视图“等待”数据首先被下载而你不能把它放在下载任务中)?

我希望我能够相对清楚地提出问题,提前谢谢

解决方法

表视图通过委托和数据源工作.通过设置这些属性,您可以告诉表格视图报告事件的位置以及查找其数据的位置.

因为这些方法表视图调用”(或者至少由UI线程发送),所以不直接运行它们.你所做的是设置委托和数据源(就像你所做的那样),然后调用表视图本身的方法来告诉它何时检查新数据.

特别是,您应该查看this section of the documentation.您可以通过异步调度self.tableView.reloadData()来逃避(前提是您的应用程序的其余部分知道您已识别的回调方法中的新数据) .

基本思想是您的UITableViewDatasource知道如何使用来自某些数据结构的信息填充表视图(例如,您可能将数组作为属性).

当底层数据发生变化时(例如,因为您已经从Web下载了某些内容),您可以更改此数据结构(例如,替换数组)并告知表视图的相应部分重新加载.

然后,它将调用各种UITableViewDatasource方法,这些方法将使用新数据重新填充表视图.

大佬总结

以上是大佬教程为你收集整理的ios – Swift – 如何根据异步下载的数据创建表视图?全部内容,希望文章能够帮你解决ios – Swift – 如何根据异步下载的数据创建表视图?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。