Swift/UISwitch: how to implement a delegate/listener

后端 未结 7 1720
慢半拍i
慢半拍i 2020-12-29 19:24

In my UITableViewController I have a custom cell which contains a switcher which is the following:

import Foundation
import UIKit

class SwitchCell: UITableV         


        
7条回答
  •  一个人的身影
    2020-12-29 20:01

    UISwitch has no delegate protocol. You can listen to the status as follows:

    ObjC:

    // somewhere in your setup:
    [self.mySwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
    
    
    - (void)switchChanged:(UISwitch *)sender {
       // Do something
       BOOL value = sender.on;
    }
    

    Swift:

    mySwitch.addTarget(self, action: "switchChanged:", forControlEvents: UIControlEvents.ValueChanged)
    
    func switchChanged(mySwitch: UISwitch) {
       let value = mySwitch.on
       // Do something
    }
    

    Swift3 :

    mySwitch.addTarget(self, action: #selector(switchChanged), for: UIControlEvents.valueChanged)
    
    func switchChanged(mySwitch: UISwitch) {
        let value = mySwitch.isOn
        // Do something
    }
    

    Swift4:

    mySwitch.addTarget(self, action: #selector(switchChanged), for: UIControl.Event.valueChanged)
    
    @objc func switchChanged(mySwitch: UISwitch) {
        let value = mySwitch.isOn
        // Do something
    }
    

提交回复
热议问题