initWithNibName没有实现超类 - Swift

Rya*_*yan 0 objective-c init ios swift

我正在尝试实现Objective-C equiv.下面用nib调用视图控制器时.

目标C:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.modalPresentationStyle = UIModalPresentationCustom;
        self.transitioningDelegate = self;
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止迅速的地方:

override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!) {
    super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)

    self.modalPresentationStyle = UIModalPresentationStyle.Custom
    self.transitioningDelegate = self
}
Run Code Online (Sandbox Code Playgroud)

但是我一直收到这个错误:

Class "ViewController" does not implement its superclass's required members
Run Code Online (Sandbox Code Playgroud)

我以为上面的init方法是否需要成员?

编辑 - 进入下面的更多细节: 类不实现其超类的必需成员

Kee*_*nle 5

您必须实现基类所需的初始化程序.在您的情况下,您应该在VC类下面添加代码:

required init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)

从Beta 5开始:

在所需初始值设定项的每个子类实现之前写入所需的修饰符.自动继承的初始值设定项可以满足所需的初始值设定项.

备注:

required init(coder aDecoder: NSCoder!) { ... }只有init在您的类中至少覆盖一个方法时才应添加.