Ios Swift 3-覆盖UINavigationController的初始值设定项以设置rootviewcontroller
我正在使用Swift 3重写一个init方法,该方法使用rootviewcontroller初始化导航控制器(并将rootviewcontroller委托设置为self)。但是,我得到了以下错误: 调用中的参数标签不正确(应具有“rootViewController:” “编码者:”) 有人能解释一下我做错了什么吗?我最初尝试使用 重写func init() 但Xcode最终让我将其转换为 便利初始化()Ios Swift 3-覆盖UINavigationController的初始值设定项以设置rootviewcontroller,ios,swift,inheritance,initialization,overriding,Ios,Swift,Inheritance,Initialization,Overriding,我正在使用Swift 3重写一个init方法,该方法使用rootviewcontroller初始化导航控制器(并将rootviewcontroller委托设置为self)。但是,我得到了以下错误: 调用中的参数标签不正确(应具有“rootViewController:” “编码者:”) 有人能解释一下我做错了什么吗?我最初尝试使用 重写func init() 但Xcode最终让我将其转换为 便利初始化() init(rootViewController:)在UINavigationControl
init(rootViewController:)
在UINavigationController
中定义,它是NavigationController
类的超类。因此,您应该使用super
而不是self
来引用它:
init() {
super.init(rootViewController: rvc)
self.rvc.delegate = self
}
由于在
NavigationController
中定义了另一个初始值设定项,Xcode认为您试图调用该初始值设定项。这就是为什么它告诉你把coder:
作为参数标签。谢谢你的解决方案和解释,Sweeper。当我使用您的解决方案时,错误变成:“NavigationController”的便利初始值设定项必须委托(使用“self.init”)而不是链接到超类初始值设定项(使用“super.init”)。想法?@Vee只需删除便利性
init() {
super.init(rootViewController: rvc)
self.rvc.delegate = self
}