2017-11-19 8 views
0

現在、アプローチvadianを使用して選択した選択テーブルにチェックマークを付けることができます。私はまた、データクラスにBoolean("selected")を追加しました。私が得られないことは、UserDefaultsを使って各行に対して選択された論理値を保存する方法、またはテーブルの行のセルにこれをロードする方法よりもです。 didloadセクションに触れる必要がありますか?以前に選択された行(承認されたユーザー)のテーブルビューのチェックマークをロード

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? TableCell else { 

     return UITableViewCell() 
    } 
        let product = products[indexPath.row] 
    cell.accessoryType = product.selected ? .checkmark : .none 

return cell } 



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? TableCell else { 



     return UITableViewCell() 
    } 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 

    var selected = products[indexPath.row].selected 
    products[indexPath.row].selected = !selected 
    tableView.reloadRows(at: [indexPath], with: .none) 

    if selected != true {print("selected", indexPath.row, selected)} 
    else {print("selected", indexPath.row, selected)} 

    selected = UserDefaults.standard.bool(forKey: "sound") 
} 

答えて

0
  • 時に選択が変更モデル内のプロパティを更新し、行をリロードデータモデル
  • にプロパティvar approved : Boolを追加します。 cellForRow
  • は、私は本当に感謝応答に時間を割いてプロパティに応じて、

    ... 
    let cell = tableview.dequeueReusableCell(withIdentifier: "myfeedTVC", for: indexPath) as! MyFeedTVC 
    let user = userDataArray[indexPath.row] 
    cell.accessoryType = user.approved ? .checkmark : .none 
    ... 
    
+0

感謝をチェックマークを設定します。 viewdidloadセクション以上に "var approved:Bool"を追加しますか?選択が変更されたときにモデルのプロパティを更新するにはどうすればよいですか?私は何とかそれぞれのブールを設定するためにdidselectrowを使用すると思いますか?その行をリロードする方法を理解していない。それは自動的に行いますか? –

+0

いいえ、データモデル(データソース配列内の項目)にプロパティを追加する必要があります。各項目には独自の「承認済み」値があります。 'tableView.reloadRows ... 'で一行をリロードして、' didSelect'で明示的に行う必要があります(そして 'didDeselect'でも)。 – vadian

+0

第1弾と第2弾のやり方を教えてくれますか?私は、あなたが私に示すコードを提供して以来、あなたが3日にやっていることを得ると思います。 :) –

関連する問題