web-dev-qa-db-fra.com

Ajouter un commutateur dans la cellule UITableView dans Swift

Comment puis-je incorporer un UISwitch par programme dans une cellule tableView dans Swift? Je le fais comme ça

let shareLocationSwitch = UISwitch()
cell.accessoryView = shareLocationSwitch
11
TAO

Voici comment incorporer un UISwitch dans une cellule 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
      }

voici la méthode de changement d'appel d'appel

func switchChanged(_ sender : UISwitch!){

      print("table row switch Changed \(sender.tag)")
      print("The switch is \(sender.isOn ? "ON" : "OFF")")
}

@LeoDabus Great! explanation.

Remarque: si votre tableview peut avoir plus d'un section alors vous devez créer un sous-classement CustomCell UITableViewCell et configurer votre accessoryView inside UITableViewCellawakeFromNib méthode au lieu de la vue table cellForRowAt méthode. Lors de la mise en file d'attente du cell réutilisable, transformez-le en votre CustomCell Voici un exemple de @LeoDabus

19
Nazmul Hasan