如何将具有自定义指定初始化程序的UISegmentedControl子类化?

时间:2017-12-09 23:31:55

标签: swift uisegmentedcontrol

似乎是一个微不足道的问题,但我无法进行此编译。 无论是在游乐场还是在正常的快速ios项目中。 (请注意我没有使用故事板,这就是为什么我不需要/关心init?(编码器)部分...它必须包含它,否则编译器会抱怨它。)

class SegmentedControl: UISegmentedControl {    
   let configuration: [String]
   required init(configuration: [String]) {     
        self.configuration = configuration            
        super.init(items: configuration)
    }    
    required init?(coder aDecoder: NSCoder) { fatalError() }
}
let x = SegmentedControl(configuration: ["a","b"])

抱怨没有实施离散初始化程序。

  

致命错误:使用未实现的初始化程序&#init;(框架:)'上课   ' __ lldb_expr_167.SegmentedControl'

我不明白这里发生了什么。不是UISegmentedControl的指定初始化程序init(items :)吗?我在我的子类中指定了初始化程序。

1 个答案:

答案 0 :(得分:0)

解决方案:

class SegmentedControl: UISegmentedControl {
    var configuration = [String]()
    required init(configuration: [String]) {
        super.init(items: configuration)
        self.configuration = configuration
    }
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    required init?(coder aDecoder: NSCoder) { fatalError() }
}
let x = SegmentedControl(configuration: ["a","b"])