【发布时间】:2015-03-18 04:12:19
【问题描述】:
总的来说,我是 Swift 和 iOS 的新手,希望能对此提供任何帮助...我正在制作一个应用程序,其中包含一个名为 ViewController.swift 的文件,其中包含 ViewController 类,另一个文件名为BTService.swift,其中包含 BTService 类。我在 VC 中设置了一个滑块,我想获取它的值并在 BTService 类中使用它。我之前问过一个关于这个的问题(Swift Reference Variable from Specific Instance of Different Class),有人建议我使用NSUserDefaults 来完成这个。这是我的 VC 类,滑块值 positionSlider.value 分配给一个键 sliderValue
class ViewController: UIViewController {
@IBOutlet var positionLabel: UILabel!
@IBOutlet var positionSlider: UISlider!
@IBOutlet var connectionLabel: UILabel!
@IBAction func sliderValChanged(sender: UISlider) {
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
println(positionSlider.value)
defaults.setFloat(Float(positionSlider.value), forKey: "sliderValue") // Write to NSUserDefaults
defaults.synchronize()
let currentValue: Float = defaults.floatForKey("sliderValue")
var currentValueString=NSString(format: "%.5f", currentValue)
sliderValue 在NSUserDefaults 中存储为float。现在,根据我的理解,我可以去我的BTService 班级并简单地这样做:
@IBAction func sliderValChanged(sender: UISlider) {
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
let currentValue: Float = defaults.floatForKey("sliderValue")
println(currentValue)
}
但是,这不起作用。我没有收到任何语法错误,但是当我调整滑块时,我也没有看到任何打印到控制台的值。有趣的是,当我在 VC 中放置 println 语句时,我确实看到了该值的输出,这表明 currentValue 正在被定义并且正在按应有的方式运行。对此的任何帮助将不胜感激。非常感谢!
【问题讨论】:
-
你检查positionSlider.value是否符合float?
-
是的,我很确定这是它的默认类型。
-
positionSlider.value 已经返回一个浮点数。无需强制同步
-
您应该从滑块而不是从 userDefaults 中读取值
-
如果您想在滑块值更改时存储滑块值,您需要在本例中使用滑块值更新 userDefaults 键“sliderValue”的值 sender.value
标签: ios objective-c iphone swift uiviewcontroller