配列内のテーブルビューで選択した行からデータを取得しようとしています。選択した行を配列に追加しますが、これはうまくいきます。残念ながら、行を選択解除してもう一度選択すると、行が再び追加されます。私は配列から選択解除された行を削除するロジックを書く必要があります。すぐに配列内に重複を避ける3
どのように私はこれを行うことができます知っていますか?私は、行を選択したときにここ
コードである:ここ
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath) as? exerciseCell
selectedCell?.contentView.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1)
rowSelected+=1
if rowSelected >= 1 {
nextBtn.isEnabled = true
nextBtn.backgroundColor = UIColor(red: 84.0/255, green: 199.0/255, blue: 252.0/255, alpha: 1)
}
let exercisesSelected = selectedCell?.exerciseNameLbl.text
exerisenames.append(exercisesSelected!)
print(exerisenames)
}
行の選択を解除するためのコードである:
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
let selectedCell = tableView.cellForRow(at: indexPath) as? exerciseCell
selectedCell?.textLabel?.textColor = UIColor.darkGray
rowSelected-=1
if rowSelected == 0 {
nextBtn.isEnabled = false
nextBtn.backgroundColor = UIColor.darkGray
nextBtn.setTitle("Choose an exercise", for: UIControlState.disabled)
}
let exercisesDeselected = selectedCell?.exerciseNameLbl.text
if exerisenames.contains(exercisesDeselected!) {
print("exercise already in the row and has to be deleted before going further")
}
print(exerisenames)
}
両方がIと呼ばれる最上位に作成された配列を参照します:exercisenames
'exerisenames.removeObject(exercisesDeselected)' –
[String]にメンバーがないというエラーが表示されます。removeObject –
arrayではなくsetを使用してみませんか? – almas