通过这个appcoder教程building a text to speech app tutorial并运行到swift 1.2->swift 2.0功能。
演示项目中有一个类。。。iOS10.11.1下的Xcode7.1.1不喜欢它,这就给了我一个错误。”initialiser不会在override init()语句中重写其超类中指定的initialiser,然后出现错误“必须调用超类UISlider的指定initialiser”。
好吧,对斯威夫特来说还不太熟悉;我开始着手解决这个问题的时候,我有点不知所措。
class CustomSlider: UISlider {
var sliderIdentifier: Int!
override init() { <--- error here
super.init() <--- error here
sliderIdentifier = 0
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sliderIdentifier = 0
}
}
这段代码应该怎么说?
最佳答案
由于UISlider
没有定义或继承指定的初始值设定项,因此不能从子类init()
调用它。
class CustomSlider: UISlider {
var sliderIdentifier: Int!
required init() {
super.init(frame: CGRect.zero)
sliderIdentifier = 0
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
sliderIdentifier = 0
}
}
在这种情况下,您可以忽略
init
的初始化,而只继承所有sliderIdentifier
的初始化器:class CustomSlider: UISlider {
var sliderIdentifier: Int! = 0
}
有关更多信息,请阅读The Swift Programming Language中标题为“指定初始值设定项和方便初始值设定项”的部分。
关于ios - 初始化程序不会覆盖其父类(super class)Swift 2.0中的指定初始化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33718285/