如何从 Swift 中另一个 ViewController 上的开关发送滑块的新 max/min 值?

How to send slider's new max/min values from a switch on another ViewController in Swift?

我想要一个开关来更改滑块的最小和最大范围。我通过将开关设置为一个动作并调用 salesPriceSlider.maximumValue 使其在相同的 ViewController 上工作,但是我将开关移至我的设置 ViewController 并且当我在 prepareforSegue 中实现相同的技术时它没有过去?

   var newPriceMin = Float(0)
   var newPriceMax = Float(0)

  @IBAction func priceSwitch(sender: UISwitch) {
   newPriceMax = 3000000
   newPriceMin = 1000000
  }

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    var destViewController: FirstViewController = segue.destinationViewController as! FirstViewController
    destViewController.salesPriceSliderOutletValue.maximumValue = newPriceMax
    destViewController.salesPriceSliderOutletValue.minimumValue = newPriceMin
}

作为一般规则,尝试从外部操作视图控制器的视图是个坏主意。您应该将视图控制器的视图视为私有视图。

您要做的是在另一个视图控制器中为所需的最大值和最小值设置属性,然后在您的 viewDidLoad 方法中,将这些属性应用到您的滑块。

您可以为最大值和最小值设置指定默认值,以便在您不从外部更改它们时它们具有合理的值。

您还可以将 didSet 方法添加到最大值和最小值,如果它们在视图控制器在屏幕上时从外部发生更改,则它们会更改滑块 max/min 值 "live",尽管这有点不常见,因为在 iOS 中,视图控制器通常在屏幕上时具有控制权。

基本上,您需要在目标视图控制器中创建两个变量说:

var PriceMin: Float = 0.0
var PriceMax: Float(0) = 0.0

之后你需要通过初始化来访问主控制器中的这两个变量!

let DestinationController = self.storyboard!.instantiateViewControllerWithIdentifier("DestinationView") as! DestinationController

DestinationController.PriceMin = _newPriceMin
DestinationController.PriceMax = _newPriceMax

现在您可以使用任何操作执行 segue!