作者hehehaha ()
看板MacDev
标题[问题] 让tableView等待data下载完再开始建立
时间Thu May 17 08:56:46 2018
如何让tableView等待data下载完再开始建立
各位好
我要做的事情是
1.从firebase下载data
2.让data显示在tableView的cell里面
我目前设定是:
1.建一个getData(),结束时会建立一个Array,也就是要放入cell的内容
2.把这个getData()放在didFinishLaunchingWithOptions里面
3.一进到app,第一个view就是tableView
遇到的状况是:
1.如果在网路不够快,或是firebase稍慢的时候,viewWillAppear、viewDidAppear执行的时候,data尚未下载完毕,这时候首页就会空白一片。
2.用print的方式可以看到,在viewWillAppear以及viewDidAppear执行的时,numberOfRowsInSection其实已经return了好几次,但这时候数字都是0,也可以看到後续其实不定时的都会再更新几次。
3.有时候幸运一点?,data下载比较快,会在某次自动更新前得到data,然後显示在页面上。
4.但如果在它自动更新次数用完之前,data还没下载完,就会像最开始讲的一样,空白一片在那边。
5.这时候如果按home键,出去再进来,就会看到资料显示。
我的问题是:
1.有没有办法,让tableView等到data下载完再更新?
2.有没办法,强迫自动更新一直到data下载完为止?
3.或是有其他的解决方式,请告诉我关键字,我来尝试。
以上,我用我目前的知识尽量说明了,如果有遗漏的地方,请告诉我。
不管有没有答案,都先感谢大家,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.135.147
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1526518609.A.B28.html
1F:→ LFimi: 资料下载完的时候 tableView.reloadData() 就好了 05/17 09:21
2F:推 gundam00: 楼上说的没错 在你的getData()最後呼叫tableiew.reloadD 05/17 11:18
3F:推 gundam00: ata()内 然後都没东西就显示empty message 不然很丑XD 05/17 11:21
太棒了,问题顺利解决
我真是太蠢,一直在外面找tableView.reloadData()适合的点
最後把tableView.reloadData()包在getData()里面就好了
谢谢上面两位
※ 编辑: hehehaha (114.136.42.144), 05/17/2018 13:36:39
※ 编辑: hehehaha (114.136.42.144), 05/17/2018 13:42:56
4F:推 rice0617: 资料在AppDelegate get的话 我会用NotificationCenter 05/18 10:19
感谢楼上
因为我还有排序的过程,所以直接包在里面会出现重复排序的状况(就不多解释了)
最後还是用NotificationCenter解决了
参考下面这个网址
https://goo.gl/BMfieY
希望也有帮助到其他人
※ 编辑: hehehaha (114.36.129.222), 05/22/2018 16:42:19