一尘不染

为什么我不能在Swift中的UIViewController上调用默认的super.init()?

swift

我不是UIViewController从情节提要中使用a
,而是要有一个自定义init函数,可以在其中传递NSManagedObjectID某些对象的。我只想像super.init()在Objective-
C中一样打电话。像这样:

init(objectId: NSManagedObjectID) {
    super.init()
}

但是我收到以下编译器错误:

必须调用超类UIViewController的指定初始化程序

我可以不再这样做吗?


阅读 256

收藏
2020-07-07

共1个答案

一尘不染

对于指定的初始化器UIViewControllerinitWithNibName:bundle:。您应该打电话给它。

参见http://www.bignerdranch.com/blog/real-iphone-crap-2-initwithnibnamebundle-
is-the-designated-initializer-of-
uiviewcontroller/

如果您没有笔尖,请nil输入nibName(捆绑包也是可选的)。然后,你可以在构建自定义视图loadView或通过添加子视图self.viewviewDidLoad,你一样使用。

2020-07-07