Swift必须调用超类uiinputviewcontroller的指定初始值设定项

Raz*_*riu 7 ios swift uiinputviewcontroller

今天早上升级到8.3后,我在主题中收到错误.

下面的代码用于完美地工作,但它不再编译.你们有人可以帮助我吗?

protocol CustomAccessoryProtocol {
    func controlButtonPressed(tag:Int)
}

class CustomAccessory : UIInputViewController {
    var accessoryView : UIView!
    var delegate : CustomAccessoryProtocol!

    @IBOutlet weak var returnButton: UIButton!
    @IBOutlet weak var backButton: UIButton!
    @IBOutlet weak var forwardButton: UIButton!

    init(delegate: CustomAccessoryProtocol){
        super.init()
        self.delegate = delegate
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        fatalError("init(coder:) has not been implemented")
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        let customNib = UINib(nibName: "CustomAccessory", bundle: nil)
        accessoryView = customNib.instantiateWithOwner(self, options: nil)[0] as! UIView
    }

    @IBAction func buttonPress(sender: AnyObject) {
        delegate.controlButtonPressed(sender.tag!)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(accessoryView)
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

我在NSWindowController的代码中遇到了同样的问题:

init() {
    super.init()
}
Run Code Online (Sandbox Code Playgroud)

我改成了:

convenience init() {
    self.init()
}
Run Code Online (Sandbox Code Playgroud)

我认为Apple比以前更严格地执行便利性.

  • 这是一个循环. (6认同)
  • 不。它就像递归函数调用,它永远不会起作用。为什么它有这么多的赞成? (2认同)