WKWebView をサブクラス化しようとしています。独自の初期化子を実装すると、次のエラーが発生しました。
'required' initializer 'init(coder:)' must be provided by subclass of 'WKWebView'
わかりました、UIView のサブクラスに実装する必要があることはよく知られています。UIView の直接のサブクラスの場合は実装するだけで機能しますが、WKWebView ではそれほど単純ではないようです。Fix-it のヒントに従い、次のスニペットをコードに追加しました。
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
fatalError("init(coder:) has not been implemented")
}
したがって、次のようなクラスを取得します。
import WebKit
class TSWebView : WKWebView {
let s: String
let i: Int
init(s: String, i: Int) {
self.s = s
self.i = i
super.init(frame: CGRectZero, configuration: WKWebViewConfiguration())
}
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
fatalError("init(coder:) has not been implemented")
}
}
ただし、これを行うと、他に次の 4 つのエラーが発生します。
expected declaration
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
consecutive declarations on a line must be separated by ';'
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
cannot override 'init' which has been marked unavailable
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
'required' modifier must be present on all overrides of a required initializer
required @availability(*, unavailable) convenience init!(coder: NSCoder!) {
何か案は?Xcode のバージョンは 6.1.1 (6A2008a) です。どうもありがとう。