我有一个类:
class DiscoverySettings {
var alert:Bool
var distance:Int
var minAge: Int
var maxAge: Int
private init(){
alert = true
distance = 50
minAge = 18
maxAge = 25
}
}
在另一个 Controller 中,我这样做:
var discovery_model = DiscoverySettings()
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == Constants.EditDiscoverSegue {
if let dseg = segue.destinationViewController.contentViewController as? DiscoverySettingsViewController {
dseg.dsettings = discovery_model
}
}
}
这是我在 updateUI() 中进行初始设置的地方:
@IBOutlet weak var distanceSlider: UISlider!
@IBOutlet weak var alertSwitch: UISwitch!
var dsettings: DiscoverySettings? {
didSet{
updateUI()
}
}
let ageSlider = RangeSlider(frame: CGRectZero)
override func viewDidLoad() {
super.viewDidLoad()
}
func updateUI(){
self.distanceSlider.value = Float(dsettings?.distance) //error
self.alertSwitch = dsettings?.alert //error
}
我在设置值的行上收到诸如“找不到接受提供的参数的 init 的重载”和“找不到重载 NSNumber 不是 UISwitch 的子类型”之类的错误。
我不确定为什么会发生这些错误,因为我在我的类中定义了相同的类型。
最佳答案
试试下面的代码:
func updateUI(){
if let dsettings = dsettings {
self.distanceSlider?.value = Float(dsettings.distance)
self.alertSwitch?.on = dsettings.alert
}
}
关于ios - 如何设置我的 UISlider 和 UISwitch 的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29459370/