如何从不同的 swift class 重置 variable/stepper 值

How to reset variable/stepper value from a different swift class

我希望我的步进器值在单独 class 中的某些变量彼此相等时重置。我尝试使用 ViewController 的一个实例,但出现错误。我的变量重置了,但步进器没有。

CircleViewClass:

class CircleView: UIView 
{  
var colors1=ViewController()
func updateStepper
  {
    if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
    {
        redd1=0;
        greenn1=0;
        bluee1=0;
        colors1.redStepper.value=0.0;//
        colors1.greenStepper.value=0.0;//
        colors1.blueStepper.value=0.0;//
    }
  }
}

ViewController Class:

class ViewController: UIViewController 
{
var colors = CircleView()

@IBOutlet weak var circleView1: CircleView!
@IBOutlet weak var blueStepper: UIStepper!
@IBOutlet weak var greenStepper: UIStepper!
@IBOutlet weak var redStepper: UIStepper!

@IBAction func stepperChange(sender: UIStepper)
{
    circleView1.redd1 = Int(redStepper.value);
    redValue.text = Int(sender.value).description;
}
@IBAction func stepperChange1(sender: UIStepper)
{
    circleView1.greenn1 = Int(greenStepper.value);
    greenValue.text = Int(sender.value).description;
}
@IBAction func stepperChange2(sender: UIStepper)
{
    circleView1.bluee1 = Int(blueStepper.value);
    blueValue.text = Int(sender.value).description;
}
}

您可以使用这样的委托模式:

// Add a delegate to your CircleView to reach back to your owning ViewController
protocol CircleViewDelegate {
    func updateRedStepperValue(value: Double)
    func updateGreenStepperValue(value: Double)
    func updateBlueStepperValue(value: Double)
}

class CircleView: UIView
{
    var colors1=ViewController()

    var delegate: CircleViewDelegate?

    func updateStepper
    {
        if(redd1==Int(red1)&&greenn1==Int(green1)&&bluee1==Int(blue1))
        {
            redd1   =0;
            greenn1 =0;
            bluee1  =0;

            // Call back to your delegate
            delegate?.updateBlueStepperValue(0.0)
            delegate?.updateGreenStepperValue(0.0)
            delegate?.updateRedStepperValue(0.0)
        }
    }
}

您的 ViewController 将订阅委托回调:

class ViewController: UIViewController, CircleViewDelegate
{
    var colors = CircleView()

    @IBOutlet weak var circleView1: CircleView!
    @IBOutlet weak var blueStepper: UIStepper!
    @IBOutlet weak var greenStepper: UIStepper!
    @IBOutlet weak var redStepper: UIStepper!

    @IBAction func stepperChange(sender: UIStepper)
    {
        circleView1.redd1 = Int(redStepper.value);
        redValue.text = Int(sender.value).description;
    }
    @IBAction func stepperChange1(sender: UIStepper)
    {
        circleView1.greenn1 = Int(greenStepper.value);
        greenValue.text = Int(sender.value).description;
    }
    @IBAction func stepperChange2(sender: UIStepper)
    {
        circleView1.bluee1 = Int(blueStepper.value);
        blueValue.text = Int(sender.value).description;
    }


    // Your delegate callback methods
    func updateRedStepperValue(value: Double) {
        redStepper.value = value
    }
    func updateGreenStepperValue(value: Double) {
        greenStepper.value = value
    }
    func updateBlueStepperValue(value: Double) {
        blueStepper.value = value
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        // Make sure to set the delegate outlet
        colors.delegate = self
    }
}