2015-09-26 48 views
-1

我正在研究一個像清單一樣工作的UITableView。我需要在UITableViewCell點擊時顯示覆選標記,並在UITableViewCell再次點擊時隱藏複選標記。我已經嘗試了this解決方案,但由於var checked = [Bool]()部分,我無法構建。我怎樣才能以另一種方式解決它?如何在UITableViewCell點擊時隱藏和顯示單元格上的複選標記?

編輯 我已經添加的代碼下面的cellForRowAtIndexPath

if checked == true { 
      cell.accessoryType = .None 
      checked = false 
     } else if checked == false { 
      cell.accessoryType = .Checkmark 
      checked = true 
     } 
+0

你可能需要存儲您行的重要細節在你的模型,例如像_title_,_subtitle_,...,甚至_checkState_值。 – holex

回答

0
  • Bool類型的checked屬性添加到您的模型。
  • cellForRowAtIndexPath:根據屬性設置複選標記。
  • 單擊單元格時,切換屬性並重新加載單元格或表格視圖。
+0

我按照你的指示,但在tableview單元格來了一個檢查,另一個檢查和下一個檢查像+ - + - + - + - + - + - 。我已經將該屬性添加爲全局,並添加了我在帖子中添加的代碼。 –

+0

不,您必須將checked屬性添加到代表表視圖的數據源的模型中,以獲取每行的單個值。如果您使用的是字典,請使用「Bool」值添加一個帶有「checked」的鍵,如果您使用的是自定義類(推薦),請添加屬性。 – vadian

+0

我正在從數組中加載數據。模型是什麼意思? –

1

我使用這個:(SWIFT 3)

func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) 
    { 
     if let cell = tableView.cellForRow(at: indexPath) { 
      if self.selectedIndexPaths.contains(indexPath) 
      { 
       cell.accessoryType = .none 
       self.selectedIndexPaths.remove(indexPath) 
      } 
      else 
      { 
       cell.accessoryType = .checkmark      
       self.selectedIndexPaths.add(indexPath) 
      } 
      // anything else you wanna do every time a cell is tapped 
     }  
    } 
相關問題