一尘不染

在Swift的UITableView单元格中添加开关

swift

如何UISwitch在Swift中的tableView单元中以编程方式嵌入?我就是那样做

let shareLocationSwitch = UISwitch()
cell.accessoryView = shareLocationSwitch

阅读 326

收藏
2020-07-07

共1个答案

一尘不染

这是您可以UISwitchUITableView单元格上嵌入的方法。

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的示例

2020-07-07