在点击段时停止cellForRowAtIndexPath

时间:2015-12-24 07:56:51

标签: ios swift uitableview uisegmentedcontrol

我下面有segmentedControltableView

SegmentedControl有两个部分:'新闻'和'事件'。

新闻和活动会下载到var news = [News]()的{​​{1}}。

对于新闻 - func getJson(type: Int),对于活动news.type = 1

我的news.type = 2方法是:

getJson

所以问题是当我滚动并立即点击第二段时,应用程序崩溃:

enter image description here

因为func getJson(type: Int) { self.news = [] // empty news array if jsonData["type"] == type { // save needed news to array self.news.append(News(id: jid, title: jtitle, subtitle: jsubtitle, urlstring: jurlstring, image: jimage!)) } } 中的self.news = []self.news.append之间有getJson

我的问题是如何在点按细分时停止cellForRowAtIndexPath?感谢。

1 个答案:

答案 0 :(得分:2)

如果您从网络加载数据的代码正在弄乱正在推动您的tableview的数组,那么您将遇到问题......而且您确实存在问题。

典型的方法是将数据加载到网络加载代码中的临时数组中,然后在加载完成后将其分配给实际数组(在您的情况下为self.news)并在此时调用{{ 1}}在你的桌面视图上。

您可能还想在加载数据时考虑用户体验。我可能会做这样的事情:

  1. 当细分更改时,隐藏tableview并取消隐藏以tableview的位置为中心的UIActivityIndi​​catorView
  2. 开始从网络加载到临时数组
  3. 加载完成后,将其分配给reloadData
  4. 重新加载表格数据
  5. 隐藏UIActivityView并取消隐藏tableview