我是Swift和iOS的新手。我正在使用Swift编写应用程序。此应用有两个文件ViewController.swift
和BTService.swift
。
ViewController.swift
有ViewController
类UIViewController
,BTService.swift
类BTService
类NSObject
和CBPeripheralDelegate
}。我在UIViewController
类中设置了滑块,其值已分配给变量currentValue
。
现在,我希望能够在currentValue
课程中引用BTService
。我该怎么做呢?我注意到,如果我在类test
之前在文件ViewController
中定义变量UIViewController
,那么我可以< / em>在test
中引用BTService
。但是这对我没用,因为我不能(根据我的知识)将滑块值分配给test,除非在UIViewController
类中定义了test。
这是我的ViewController和currentValue变量定义。
class ViewController: UIViewController {
@IBOutlet var positionLabel: UILabel!
@IBOutlet var positionSlider: UISlider!
@IBOutlet var connectionLabel: UILabel!
@IBAction func sliderValChanged(sender: UISlider) {
var currentValue = Float(positionSlider.value)
任何帮助将不胜感激!谢谢。
答案 0 :(得分:1)
您可以使用NSUserDefaults
在应用程序中存储数据,并在视图控制器之间共享。
在您给出的示例中,您可以将其存储为:
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
defaults.setFloat(Float(positionSlider.value), forKey: "sliderValue") // Write to NSUserDefaults
defaults.synchronize()
然后,只要您需要在另一个文件(或此文件)中访问它,您只需拨打floatForKey
:
if let currentValue: Float = defaults.floatForKey("sliderValue") {
// Access slider value
} else {
// Probably not saved
}
答案 1 :(得分:0)
你的BTService
是UIViewController中的一个属性吗?
你能否使用Key Value Observing(KVO)
在你的UIViewController里面
override func viewDidLoad() {
self.addObserver(self, forKeyPath: "positionSlider.value", options: .New, context: nil)
}
deinit() {
self.removeObserver(self, forKeyPath: "positionSlider.value")
}
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == "positionSlider.value" {
// update service property
}
}