UISwitch切换目标未执行

时间:2018-05-25 06:42:45

标签: ios swift uiswitch

我完全迷失了。我的一个屏幕中有一个切换按钮(UISwitch)我已经在交换机上添加了一个目标来识别交换机中的变化。然而,当切换开关没有任何反应时,我感到困惑和迷失。

import Foundation
import UIKit

class PrivateCell: UITableViewCell {
    var stackView: UIStackView?
    let switchStatementLabel : UILabel =  {
        let switchStatementLabel = UILabel()
        switchStatementLabel.textAlignment = .justified
        switchStatementLabel.text =  "Make Profile Private"
        return switchStatementLabel
    }()

    let privateSwitch : UISwitch  = {
       let privateSwitch = UISwitch(frame:  CGRect(x: 0, y: 0, width: 70, height: 70))
        privateSwitch.isOn = false
        privateSwitch.onTintColor = UIColor.rgb(red: 44, green: 152, blue: 229)
        privateSwitch.addTarget(self, action: #selector(switchToggled(_:)), for: UIControlEvents.valueChanged)
        return privateSwitch
    }()

    @objc func switchToggled(_ sender: UISwitch) {
        if privateSwitch.isOn {
            print("switch turned off")
        }else{
            print("switch turned on")
        }
    }
    @objc func setupViews(){
        backgroundColor = .white
        stackView = UIStackView(arrangedSubviews: [ switchStatementLabel, privateSwitch])
        stackView?.axis = .horizontal
        stackView?.distribution = .equalSpacing
//        stackView?.spacing = 10.0
        if let firstStackView = stackView{
            self.addSubview(firstStackView)
            firstStackView.snp.makeConstraints { (make) in
                make.edges.equalTo(self).inset(10)
            }
        }
    }


    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        setupViews()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
} 

我添加了我的代码,任何人都可以帮助我

2 个答案:

答案 0 :(得分:0)

试试这个

import Foundation
import UIKit

class PrivateCell: UITableViewCell {
    var stackView: UIStackView?
    let switchStatementLabel : UILabel =  {
        let switchStatementLabel = UILabel()
        switchStatementLabel.textAlignment = .justified
        switchStatementLabel.text =  "Make Profile Private"
        return switchStatementLabel
    }()

let privateSwitch : UISwitch  = {
   let privateSwitch = UISwitch(frame:  CGRect(x: 0, y: 0, width: 70, height: 70))
    privateSwitch.isOn = false
    privateSwitch.onTintColor = UIColor.rgb(red: 44, green: 152, blue: 229)
    return privateSwitch
}()

@objc func switchToggled(_ sender: UISwitch) {
    if privateSwitch.isOn {
        print("switch turned off")
    }else{
        print("switch turned on")
    }
}
@objc func setupViews(){
    privateSwitch.addTarget(self, action: #selector(switchToggled(_:)), for: UIControlEvents.valueChanged)
    backgroundColor = .white
    stackView = UIStackView(arrangedSubviews: [ switchStatementLabel, privateSwitch])
    stackView?.axis = .horizontal
    stackView?.distribution = .equalSpacing
//        stackView?.spacing = 10.0
        if let firstStackView = stackView{
            self.addSubview(firstStackView)
            firstStackView.snp.makeConstraints { (make) in
                make.edges.equalTo(self).inset(10)
            }
        }
}


override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    setupViews()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
}

答案 1 :(得分:0)

@IBOutlet var swtOnlineOfline: UISwitch!

swtOnlineOffline.addTarget(self, action: #selector(self.onlineOfflineSwitchValueChange(_:)), for: .valueChanged)


@IBAction func onlineOfflineSwitchValueChange(_ sender: UISwitch)
{

    if sender.isOn
    {
        swtOnlineOffline.setOn(false, animated: true)
    }
    else
    {
        swtOnlineOffline.setOn(true, animated: true)
    }
}