1

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

我有一个 UIslider IBAction 正在生成一个 Double (var = rounded)。我想在 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(rounded, forKey: kCIInputIntensityKey)是我得到错误的地方。我想在这里使用滑块函数中的“舍入”变量。

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

谢谢

4

2 回答 2

0

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

要在整个类中访问变量,您可以在类的顶部声明它。然后将其分配给,以便以后访问它,直到从堆中删除(解除分配)。

于 2015-08-08T19:20:59.400 回答
0
  1. 在类的开头声明一个实例变量——在任何方法之外——使用默认值UISlider

    var rounded : Double = <defaultValueOfTheSlider>
    
  2. 删除invar之前的关键字roundedsliderValueChanged()

于 2015-08-08T19:00:27.210 回答