私が直面している問題は、おそらく再利用可能なセルという概念の理解の欠如です。私は、30の行を作成し、それぞれにUISwitchがあるとしましょう。UITableViewの使用時にオブジェクトの参照を保持する方法は?
スイッチを切り替えると、その動作が他の29に影響するはずです。ポイントは次のとおりです。私が知る限り、iOSはすべてを一度に作成するのではなく、 TableViewが上下にスクロールされます。
これらの再利用オブジェクトのコピーを保持し、iOSにスイッチに適切な値を設定するように指示するにはどうすればよいですか?
私はに追加セルを有するに思っている[UISwitch]私が見て、そこにすべての30個のセルを持って管理することはできません。
...
var switches = [UISwitch]()
...
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Field10Cell", for: indexPath) as! Field10TableViewCell
...
//cell.value is a UISwitch
if !switches.contains(cell.value) {
switches.append(cell.value)
}
return cell
}
"スイッチの1つをトグルすると、その動作は他の29に影響するはずです。これ以上説明できますか? – 3stud1ant3
私はスイッチ1をトグルするとしましょう。それは 'onvaluechanged'です。他の29個のスイッチをすべて無効にしたいのですが、私はそれらのインスタンスをまだ持っていないのでできません。(私は推測します) – Rob
あなたは間違った方法を考えています。 1つのスイッチがトグルされている場合、すべてのスイッチが同じ状態を保持することになっている場合は、現在の状態を保持するブール値のプロパティとIBActionを宣言します。セルのボタンをアクションに接続します。スイッチが値を変更した場合は、ブール値のプロパティを更新し、テーブルビューをリロードし、cellForRow内のスイッチの状態をそれに応じて設定します。 – vadian