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

时间:2015-04-15 13:55:19

标签: ios swift slider viewcontroller uiswitch

我想要一个开关来改变滑块的最小和最大范围。通过将开关设置为动作并调用salesPriceSlider.maximumValue,我让它在同一个ViewController上工作,但是我将开关移动到我的settingsViewController,当我在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
}

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

基本上,你需要在Destination View Controller创建两个变量:

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了!