1

通过这个 appcoder 教程构建文本到语音应用程序教程并运行 swift 1.2-> swift 2.0 功能。

演示项目中有一个类... IOS 10.11.1 下的Xcode 7.1.1 不喜欢它,给了我错误。override init() 语句中的“初始化器不会从其超类中覆盖指定的初始化器”,然后是错误“必须调用超类 UISlider 的指定初始化器”。

好的,对 Swift 来说比较陌生;在我开始解决这个问题的地方,我有点迷失了。

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
}

}

这个代码片段应该说什么?

4

1 回答 1

4

由于UISlider没有将其定义或继承init()为指定的初始化程序,因此您不能从您的子类中调用它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
    }

}

在这种情况下,您可以排除初始化sliderIdentifier并继承所有UISliders 初始化程序:

class CustomSlider: UISlider {

    var sliderIdentifier: Int! = 0

}

有关更多信息,请阅读Swift 编程语言中标题为“指定初始化程序和便利初始化程序”的部分。

于 2015-11-15T09:51:23.557 回答