在我的应用中,我使用的是名为BaseNavigator
的类。看起来像这样:
class BaseNavigator {
enum Destination {
}
weak var navigationController: UINavigationController?
func navigate(to destination: Destination, completion:((Bool) -> ())? = nil) {
let viewController = makeViewController(for: destination)
navigationController?.pushViewController(viewController, animated: true)
completion?(true)
}
}
现在,我想扩展此类,以便例如可以创建一个PreferencesNavigator
。
class PreferencesNavigator: BaseNavigator {
enum Destination {
case general
case about
}
}
这将允许我像这样使用它:
let navigator = PreferencesNavigator()
navigator.navigate(to: .general)
但是,当我尝试编译它时,Xcode开始抱怨Destination
模棱两可。我该如何解决?
答案 0 :(得分:0)
我不知道您要解决的问题,但是对于我的初步印象,我建议您通过协议进行操作。
protocol BaseNavigator {
func getDestination()
}
然后,只要您拥有一个符合该协议的类,就可以调用该方法,该方法可以根据需要在协议定义中调整返回类型。
答案 1 :(得分:-2)
您做错了,因为您没有navigate(to:
类的PreferencesNavigator
,因此请执行以下操作:
在PreferencesNavigator
之外写枚举:
enum Destination {
case general
case about
}
并像这样继承BaseNavigator
class PreferencesNavigator: BaseNavigator {
}
然后您的代码将起作用