2016-11-25 70 views
0

tableview的選定行(.checkmark)值(字符串)保存在sqlite數據庫中,並且tableview必須重新載入相同的值,同時顯示覆選標記。代碼段下面給出swift如何從sqlite中重新載入tableview選定行(.checkmark)值

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     print("selected \(arr[indexPath.row])") 

     if let cell = medTable.cellForRowAtIndexPath(indexPath) { 
      if cell.selected { 
       cell.accessoryType = .Checkmark 

      } 
     } 

     if let selectedrows = tableView.indexPathsForSelectedRows { 

      print("didDeselectRowAtIndexPath selected rows:\(selectedrows)") 

      let objRegisterModel: RegisterModel = RegisterModel() 

      medicationFor = "\(selectedrows)" 
      objRegisterModel.MedicationFor = medicationFor; 


      let splitString = objRegisterModel.MedicationFor.componentsSeparatedByString(",") 

      print("getSelectedrowsValues", splitString) 


     } 
    } 

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 

     print("deselected \(arr[indexPath.row])") 

     if let cell = medTable.cellForRowAtIndexPath(indexPath) { 
      cell.accessoryType = .None 
     } 

     if let sr = medTable.indexPathsForSelectedRows { 
      print("didDeselectRowAtIndexPath selected rows:\(sr)") 
     } 
    } 

在重裝tableview中,顯示的值,但

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


     let cell = medTable.dequeueReusableCellWithIdentifier(intervalCellIdentifier, forIndexPath: indexPath) as UITableViewCell 

     cell.accessoryType = .None 
     cell.textLabel?.text = arr[indexPath.row] 

     let objRegisterModel: RegisterModel = RegisterModelManager.getDBInstance().getRegisterDataByCurrentMedID(uid) 

     if objRegisterModel != "" { 

      medicationFor = objRegisterModel.MedicationFor 
     } 


     return cell 
    } 

在sqliteDB保存的值顯示如下

**[<NSIndexPath: 0xc000000000200016> {length = 2, path = 0 - 1}]** 
+0

讓我們看看你的tableView (tableView:UITableView,numberOfRowsInSection節:Int)方法。 –

+0

func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > Int { return arr.count } –

+0

那麼存儲在arr數組中的值是什麼? –

回答

0

FUNC的tableView(的tableView沒有選中標記:UITableView的, letSelectRowAtIndexPath indexPath:NSIndexPath){let cellN:UITableViewCell = UITableViewCell(); 如果讓==器isChecked真正{ cellN.accessoryType = UITableViewCellAccessoryType.Checkmark }其他{ cellN.accessoryType = UITableViewCellAccessoryType.None } 恢復單元 }

您需要檢查的cellForRowAtIndexPath委託方法狀態顯示/隱藏複選標記。

0

您已經添加了cell.accessoryType = .Checkmarkfunc tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

cell.accessoryType = .Nonefunc tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath)

這將確保複選標記顯示在選擇和隱藏在取消選擇。

但在表格視圖重載的情況下,數據源方法func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell被調用時,你有隻增加cell.accessoryType = .None'

如果你需要顯示選中標記正確地調用下面的代碼片段,從我的理解,從讀取數據DB,設置accessoryType

let objRegisterModel: RegisterModel = RegisterModelManager.getDBInstance().getRegisterDataByCurrentMedID(uid) 

    if objRegisterModel != "" { 

     medicationFor = objRegisterModel.MedicationFor 
    } 

,然後把前一個條件相應

if (informationShownSelectedinDB) { 
    cell.accessoryType = .Checkmark 
} else { 
    cell.accessoryType = .None 
} 
+0

謝謝.. @ DILi,@Harsh Shah&El Tomato我會很快檢查併發布結果 –

相關問題