Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift必须调用超类uiinputviewcontroller的指定初始值设定项_Ios_Swift_Uiinputviewcontroller - Fatal编程技术网

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

Ios Swift必须调用超类uiinputviewcontroller的指定初始值设定项,ios,swift,uiinputviewcontroller,Ios,Swift,Uiinputviewcontroller,在今天早上升级到8.3之后,我得到了主题中的错误 下面的代码过去工作得很好,但现在不再编译了。你们谁能帮帮我吗 protocol CustomAccessoryProtocol { func controlButtonPressed(tag:Int) } class CustomAccessory : UIInputViewController { var accessoryView : UIView! var delegate : CustomAccessoryPro

在今天早上升级到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)
    }
}

我在NSWindowController的以下代码中遇到了相同的问题:

init() {
    super.init()
}
我把它改成:

convenience init() {
    self.init()
}

我认为苹果公司比以前更严格地执行便利性初始化

我想知道UIInputViewController的指定初始值设定项是什么?我想不是
init(frame:CGRect)
?第一个init不是一个方便的init吗?你必须添加便利关键字吗?我不认为这是一门科学。我曾经有过一些案例,我不得不与之斗争一段时间才能弄清楚。根据您拥有的初始值设定项,我假设您在某个时候阅读了有关该主题的Swift…UIInputViewController或UIViewController的8.3文档中是否有任何更改?我找不到任何更改,或者可能我遗漏了一些内容,我还想知道指定的初始值设定项,因为我所看到的都是我已经拥有的。也许他们会更新文档,因为到目前为止我看不到这方面的任何内容。然而,在为第一个init和self.init(而不是超级init)添加便利性时,它似乎是有效的。先生,你让我高兴极了!伟大的很高兴它能工作。对于self.init(),我收到警告“找不到接受提供的参数的'init'的重载sadding
convency init()
给了我一个严重的超额。请帮助。可能是因为您引用的是
self.init()
哪一个引用自身?不。它就像递归函数调用一样,从不工作。为什么它有这么多的上表决权?这会导致无限循环。