2016-01-20 69 views
2

我有一個UITableViewCell自定義類,我有一個xib的自定義類。現在我正在註冊主要類的viewDidLoad中的筆尖。UItableViewCell中的項獲得多次顯示

tableView.registerNib(UINib(nibName: "TCell", bundle: nil), forCellReuseIdentifier: "TCellID") 

現在在cellForRowAtIndexPath我做這樣得到渲染

let cell = tableView.dequeueReusableCellWithIdentifier("TCellID", forIndexPath: indexPath) as! TCell 
cell.bView.addTag(#SOMEITEM) 

我使用的庫here添加標籤

return cell 

小區被正確地呈現爲我的電池想要,但問題是,當我上下滾動tableView時,#SOMEITEM被一次又一次地添加,因爲我上下滾動。

我認爲問題在於tableView中單元格的渲染。我試着在cellForRowAtIndexPath中放置斷點,並且每次滾動時都會調用它,並顯示該單元格。但我無法弄清楚確切的問題。我搜索並沒有找到解決方案。我在迅速

希望工作,你明白的問題提前

+0

什麼是SOMETIME視圖包含? –

+0

@BharathVankireddy更新了代碼 – George

+0

@FOOO是否正在刷新? –

回答

3

由於這是因爲你每一個的tableView要求您可以將單元配置(每當一個新的細胞是時候添加標籤出現在屏幕上)。

修復它首先去除所有標籤,然後添加你想要的標籤:

cell.bView.removeAllTags() // Or equivalent method. 
cell.bView.addTag(#SOMEITEM) 
+0

是否有任何其他方式只顯示一次單元格,因爲一旦單元格顯示出來,它不會改變,每次刪除和添加似乎都有很多工作。我只用一次這個電池。 – George

+0

這是UITableView的工作原理。一旦它看起來不再需要這個單元格(即,當它被滾動出屏幕時),它需要在重新使用之前重建。 – Mark

+0

上面的代碼會減慢滾動嗎?以及如果我使用變量來保存單元格,並返回該變量,如果該變量不是空的呢? – George

1

您可以在自定義的UITableViewCell越權「prepareForReuse」,並添加代碼像馬克說。
super.prepareForReuse() bView.removeAllTags() // Or equivalent method.

+0

這看起來像是一個更正確的方式。 – Mark

相關問題