尝试实现此目的时:
extension UIViewController {
public var presentedViewController: UIViewController? {
return UIViewController()
}
}
我收到以下错误:
.../ExampleApp/ExampleAppTests/SpecExtensions.swift:41:59: Getter for 'presentedViewController' with Objective-C selector 'presentedViewController' conflicts with method 'presentedViewController()' with the same Objective-C selector
我正在使用UIViewController.h定义的相同选择器:
public var presentedViewController: UIViewController? { get }
错误是误导还是我只是忽略了什么?我已尝试使用和不使用override
,public
作为方法,等等。没有运气。但是,如果它在UIViewController的子类上,而不是UIViewController本身,我可以覆盖它。
答案 0 :(得分:1)
问题是你在扩展中有它。您无法覆盖扩展中类上定义的方法。基本上,扩展不是子类,尝试通过在扩展中实现新版本来重新定义类中存在的方法将失败。
请注意,这有效:
class ViewController: UIViewController {
override var presentedViewController: UIViewController? {
return UIViewController()
}
}