ios - 如何从不同的 swift 类重置变量/步进值

标签 ios swift class variables instance

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

CircleView 类:

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;//
    }
  }
}

View Controller 类:

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;
}
}

最佳答案

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

// 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 将订阅委托(delegate)回调:

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
    }
}

关于ios - 如何从不同的 swift 类重置变量/步进值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35322601/

相关文章:

Java Robot类按土耳其字母(Ö, ö, Ş, ş, Ü, ü, Ğ, ğ, İ, ı, Ç, ç, Ə, ə)?

ios - SwiftUI:动画期间的文本问题

xcode - 导航栏颜色问题

ios - 推送通知本地化以发送设备语言显示,而不是接收设备语言。 swift

ios - 从本地通知打开应用程序后动画标签 [Swift 3.0 - Xcode 8]

C++ 数组错误 C3646 : 'jarArray' : unknown override specifier

c# - 在个人类别中表示性别

ios - 展开 LazyVStack 显示区域

ios - 如何向按钮或 UIView 添加多次点击?

ios - 设置标签栏半透明不起作用