2015-12-24 27 views
0

我有一個segmentedControl和一個tableView下面。當點擊段時停止cellForRowAtIndexPath

SegmentedControl有兩個部分:'新聞'和'事件'。

新聞和活動下載到var news = [News]()func getJson(type: Int)

新聞 - news.type = 1,事件news.type = 2

getJson方法是:

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!)) 
    } 
} 

所以,問題是,當我滾動,及時挖掘第二部分,應用程序崩潰:

enter image description here

因爲self.news = []self.news.appendgetJson之間,在這裏去cellForRowAtIndexPath

我的問題是如何當我點擊段時停止cellForRowAtIndexPath?謝謝。

+0

你在'numberOfRowsInSection'中返回什麼?你在切換段並開始加載數據時調用'reloadData'嗎? – Paulw11

+0

我返回'news.count'。我打電話。問題是'tableView'不斷填充單元格,但'getjson'確實'self.news = []' – aaisataev

+1

通常情況下,您會將數據加載到臨時數組中,然後在加載數據後將數據複製到'self.news'中,然後調用reloadData – Paulw11

回答

2

如果你的代碼是從網絡加載數據與驅動你的tableview的數組搞混了,那麼你將遇到問題......而你是。

典型的方法是將數據加載到網絡加載代碼中的臨時數組中,然後在加載完成時將此數據分配給實際數組(在您的情況下爲self.news),然後在您的tableview上調用reloadData

您可能還想在數據加載時考慮用戶體驗。我可能會做這樣的事情:

  1. 當段改變,隱藏的tableview和取消是在tableview中的位置爲中心
  2. 開始裝載從網絡到一個臨時數組
  3. 當一個UIActivityIndi​​catorView加載完成其分配給self.news
  4. 重新加載表數據
  5. 隱藏UIActivityView和取消隱藏的tableview
相關問題