gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:42 25 4
gpt4 key购买 nike

我正在使用 Swift 3 覆盖一个 init 方法,该方法使用 rootviewcontroller 初始化我的 Navigation Controller(并将 rootviewcontroller 委托(delegate)设置为 self)。但是,我收到以下错误:

Incorrect argument label in call (have 'rootViewController:', expected 'coder:')

class NavigationController: UINavigationController, RootViewControllerDelegate {

let rvc = RootViewController()

convenience init() {
self.init(rootViewController: rvc) // Incorrect argument label in call (have 'rootViewController:', expected 'coder:')
self.rvc.delegate = self
}

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

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

override func init()

但 Xcode 最终让我将其转换为

convenience init()

最佳答案

init(rootViewController:)UINavigationController 中定义,它是您的 NavigationController 类的父类(super class)。因此,您应该使用 super 而不是 self 来引用它:

init() {
super.init(rootViewController: rvc)
self.rvc.delegate = self
}

由于您在 NavigationController 中定义了另一个初始化程序,Xcode 认为您正在尝试调用那个 初始化程序。这就是它告诉您将 coder: 作为参数标签的原因。

关于ios - Swift 3 - 覆盖 UINavigationController 的初始值设定项以设置 rootviewcontroller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42642943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com