Swift - 在另一个函数中使用来自UISlider IBAction的值

时间:2015-08-08 18:41:11

标签: swift uislider identifier xcode6.4

这是一个困扰我的超级基本问题。

我有一个生成Double(var =舍入)的UIslider IBAction。我想在viewDidLoad中使用这个double。但是收到错误" 使用未解析的标识符'舍入' "

@IBAction func sliderValueChanged(sender: UISlider) {
    var currentValue = Double(sender.value)
    var rounded = Double(round(100*currentValue)/100)
    label.text = "\(rounded)"
}


override func viewDidLoad() {
    super.viewDidLoad()
    let fileURL = NSBundle.mainBundle().URLForResource("puppy", withExtension: "jpg")
    let beginImage = CIImage(contentsOfURL: fileURL)
    let filter = CIFilter(name: "CISepiaTone")
    filter.setValue(beginImage, forKey: kCIInputImageKey)
    filter.setValue(rounded, forKey: kCIInputIntensityKey)
    let newImage = UIImage(CIImage: filter.outputImage)
    self.imageView.image = newImage
}

filter.setValue(四舍五入,forKey:kCIInputIntensityKey)是我收到错误的地方。我想使用' round'来自滑块功能的变量。

非常感谢在另一个函数中使用一个函数中的一个变量的任何帮助。我已经碰到了几次没有成功。所以,一旦你们在这里帮助我,它也应该解决我的其他问题。

由于

2 个答案:

答案 0 :(得分:0)

  1. 在类的开头声明一个实例变量 - 在任何方法之外 - 使用默认值UISlider

    var rounded : Double = <defaultValueOfTheSlider>
    
  2. var

  3. rounded之前删除关键字sliderValueChanged()

答案 1 :(得分:0)

一些可以帮助你的概念。 您遇到的问题是您正在函数内创建一个实例,并且在函数返回时它会丢失。原因是函数数据是在堆栈上创建的,stack是应用程序进程使用的临时内存。

要在整个班级中访问变量,您可以在课程顶部声明它。然后将其分配给heap,以便以后可以访问,直到从堆中删除(取消分配)。