代码之家  ›  专栏  ›  技术社区  ›  Pradumna Patil

开关值更改状态问题

  •  0
  • Pradumna Patil  · 技术社区  · 5 年前

    我用过 UISwitch 在我的申请中 valueChanged 这个开关在我的 UITableView

    settingsTableCell.androidSwitchSmall.addTarget(self, action: #selector(switchStateChanged(_:)), for: .valueChanged)
    
    
    @objc func switchStateChanged(_ mjSwitch: MJMaterialSwitch) {
        if self.lastSwitchState == mjSwitch.isOn {
            return
        }
        self.lastSwitchState = mjSwitch.isOn
        print(mjSwitch.isOn, mjSwitch.tag, "Small")
        self.changeTrackStatus()
    }
    

    我正在改变目标方法中开关的值。所以又来了 switchStateChanged 方法。

    开关状态已更改 此方法仅在用户更改开关状态时使用。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Krunal Nagvadia    5 年前

    按照步骤进行。

    步骤-1

    TabelView Cell

    var Btn1 : (()->())? 
    

    步骤-2

    TabelViewCell 在上面打电话 Variable

    @IBAction func cellbtn(_ sender: UIButton) {
            Btn1?()
     }
    

    步骤-3

    宣布 Bool 变量和您的 Function View Controller

    var IsSwitchOn = false
    
     func switchStateChanged(_ mjSwitch: MJMaterialSwitch) {
        if self.IsSwitchOn {
            return
        }
        self.IsSwitchOn = True
        print(mjSwitch.isOn, mjSwitch.tag, "Small")
        self.changeTrackStatus()
    }
    

    步骤-4

    把这个叫进来 cellForRowAt indexPath

    let cell = tableView.dequeueReusableCell(withIdentifier: "CellID") as! YourCell
    
    cell.Btn1 = {
                  () in
                  Self.switchStateChanged()
            }
    

        2
  •  0
  •   Yervand Saribekyan    5 年前

    必须以编程方式发送操作, 您可以使用以下扩展名

    extension UISwitch {
        func set(on state: Bool, animated: Bool = true) {
            setOn(state, animated: animated)
            sendActions(for: .valueChanged)
        }
    }
    
        3
  •  0
  •   Subash thapa    5 年前

    settingsTableCell.androidSwitchSmall.addTarget(self, action: #selector(switchStateChanged(_:)), for: .touchUpInside)