我想要一个开关来改变滑块的最小和最大范围。通过将开关设置为动作并调用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
}
答案 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了!