2017-03-18 19 views
0

私はテーブルビューを持っており、テーブルビューから1つのアイテムだけを選択したい場合は、セルにチェックマークを追加します。同時に、私はまた他の細胞のチェックマークが消えるようにしたい。ユーザーは一度に1つしか選択できません。次に、データを保存したい(好ましくはUserDefaultsを使用)。それ、どうやったら出来るの?スウィフト3のUITableViewCellアクセサリチェックマークの状態を保存する方法

答えて

1

IndexPath型のクラス変数を作成します。あなたのcellForRowAtメソッドでは、.checkmarkアクセサリタイプは、インデックスパスがクラス変数と一致する場合にのみ設定し、そうでない場合は.noneを設定します。 didSelectRowAt方法で選択した変数のindexPathを更新し、ちょうど

+0

このように使用する必要がありますテーブルビューリロードします。https://www.dropboxを.com/s/jlqucl40piso7e5/save%20checkmark%20accessory.png?dl = 0 –

+0

ユーザーのデフォルトでindexPathを保存する必要はありません。単にクラス変数を作成するだけです。スクリーンショットでは、ユーザーのデフォルトでインデックスパスを保存しています...ユーザーのデフォルトで保存するデータは何ですか? –

+0

テーブルビューを更新するときに、ユーザーのデフォルトからインデックスパスを取得し、そのインデックスパスに基づいてアクセサリチェックマークを設定できるように、選択した行のインデックスパスを保存したい –

0

あなたは、私はこのエラー、ここではコードとデバッガ出力のスクリーンショットだ

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 
    let sgp : UITableViewCell = tableView.cellForRow(at: indexPath)! 
    sgp.accessoryType = .checkmark 
} 
関連する問題