目次
1.cell内にUIボタンを置く際の注意
1.cell内にUIボタンを置く際の注意
cellの中にボタン(UISwitchやUISegmentedControl)を配置する際はtableの更新時に注意が必要。
下記のようにdata配列の値が更新された際にtableViewが更新される場合について考える。
var data = [
["name", "イベント名"],
["location", "緯度経度"],
["run", "1"]
]{
didSet{
detailTable.reloadData()
}
}
//ここでボタンからrunの値を操作する。
@IBAction func runChanged(_ sender: UISegmentedControl) {
if (sender.titleForSegment(at: sender.selectedSegmentIndex) == "run"){
print("run")
data[2][1] = "1"
}else{
print("off")
data[2][1] = "0"
}
}
下記のコードは先程のコードでtableViewが更新された際に実行される部分。
data(run)の値を取得し、それに合わせたボタンを選択した状態で再描画する。
この作業をしないとデータの中身と対応していない状態のボタンが描画されてしまう。
if(data[2][1] == "0"){
runSwitch.selectedSegmentIndex = 1
}else{
runSwitch.selectedSegmentIndex = 0
}