Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift 3-覆盖UINavigationController的初始值设定项以设置rootviewcontroller_Ios_Swift_Inheritance_Initialization_Overriding - Fatal编程技术网

Ios Swift 3-覆盖UINavigationController的初始值设定项以设置rootviewcontroller

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

我正在使用Swift 3重写一个init方法,该方法使用rootviewcontroller初始化导航控制器(并将rootviewcontroller委托设置为self)。但是,我得到了以下错误:

调用中的参数标签不正确(应具有“rootViewController:” “编码者:”)

有人能解释一下我做错了什么吗?我最初尝试使用

重写func init()

但Xcode最终让我将其转换为

便利初始化()

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
}