2015-09-02 45 views
0

我創建了一個UITableViewCell的自定義類,其中包含UIGestureRecognizer上不同狀態的一些變量。關於UITableViewCell自定義類和UITableView滾動的問題

對於爲例:

class CustomClass : UITableViewCell { 
    var isDisabled : Bool! = false 
} 

我有一個滑動手勢檢測用戶想要禁用的單元格。所以當用戶刷卡時,我將變量「isDisabled」設置爲true。

一切工作正常,直到這裏。

但是,如果第一行將變量「isDisabled」設置爲true,並且在我的tableView中滾動,則頁面底部的第一行加載變量「isDisabled」也爲真,但用戶不需要'不要說他希望這個單元格被禁用。

那麼,你有什麼想法我怎麼能解決我的問題?

感謝

+0

您是否知道'UITableView'中的可重用單元行爲? –

+0

出於興趣,爲什麼當你用一個值實例化時,你將'isDisabled'聲明爲一個隱式解包的可選項?你會因爲什麼原因將它設置爲「零」嗎? – Rupert

回答

2

你說明的是關於UITableView的重用的小區bahaviour問題。你可以用不同的方式解決,我會試着解釋你是其中之一:

  • 您可以創建一個集合(Array,或別的東西)的Bool例如,與細胞數量的大小你的UITableView和每當你檢測到一個滑動手勢標記陣列中的位置indexPath.rowtruefalse取決於它的狀態。這保持了每個索引的單元狀態。

我希望這對你有所幫助。

+1

當然,您可以在'prepareForReuse'中重置'Bool',但正如Apple明確指出的那樣,您不應該使用表視圖單元來存儲有關項目的狀態。 – Rupert

+0

準確@Rupert。 –