initWithNibName没有实现超类 - Swift

时间:2014-08-12 15:09:55

标签: ios objective-c swift init

我正在尝试实现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;
}

到目前为止,我处于快速的地方:

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

    self.modalPresentationStyle = UIModalPresentationStyle.Custom
    self.transitioningDelegate = self
}

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

Class "ViewController" does not implement its superclass's required members

我认为上面的init方法是需要成员吗?

编辑 - 详细信息如下: Class does not implement its superclass's required members

1 个答案:

答案 0 :(得分:5)

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

required init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
}

自Beta 5以来:

  

在每个子类实现之前编写必需的修饰符   必需的初始化程序。可以满足所需的初始化程序   自动继承初始化器。

<强>说明:

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

init