SwiftのtableViewセルにプログラムでUISwitch
を埋め込むにはどうすればよいですか?私はそのようにしています
let shareLocationSwitch = UISwitch()
cell.accessoryView = shareLocationSwitch
これは、UISwitch
セルにUITableView
を埋め込む方法です。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "yourcellIdentifire", for: indexPath) as! YourCellClass
//here is programatically switch make to the table view
let switchView = UISwitch(frame: .zero)
switchView.setOn(false, animated: true)
switchView.tag = indexPath.row // for detect which row switch Changed
switchView.addTarget(self, action: #selector(self.switchChanged(_:)), for: .valueChanged)
cell.accessoryView = switchView
return cell
}
ここにスイッチコールベックメソッドがあります
func switchChanged(_ sender : UISwitch!){
print("table row switch Changed \(sender.tag)")
print("The switch is \(sender.isOn ? "ON" : "OFF")")
}
@LeoDabus
Great! explanation
。
注:tableview
に複数のsection
がある場合は、CustomCellサブクラスUITableViewCell
を作成し、accessoryView
内部ビューUITableViewCell
awakeFromNib
メソッドではなく、テーブルビューcellForRowAt
メソッド。再利用可能なcell
をデキューするときに、CustomCellにキャストします これは@LeoDabusからのサンプルです