64

次の UIViewController クラスに init メソッドを追加できません。init メソッドにコードを記述する必要があります。init(coder) メソッドを書く必要がありますか? コーダーとデコーダーのメソッドを追加しても、まだエラーが発生します。また、パラメーターなしで init メソッドを使用しようとしましたが、それも機能していないようです。

class ViewController: UIViewController {

    var tap: UITapGestureRecognizer?

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)   {
        super.init(nibName: nil, bundle: nil)
        tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
    }

...
...
}

パラメータなしで super.init() メソッドを呼び出すと、エラーは「スーパークラスの指定された初期化子を呼び出す必要があります」であり、パラメータ nib とバンドルを渡すと、エラーは「必要な初期化子 init(coder)」です。

init(coder) と init(decoder) を追加しても機能しません。

4

8 に答える 8

68

私が使用した:

convenience init() {
    self.init(nibName:nil, bundle:nil)
}

一部の人々は提案しました:

convenience init(){
    self.init()
}

しかし、これは無限ループを引き起こします。

于 2015-09-02T18:26:39.657 に答える