无法在UIViewController上实现计算属性覆盖

时间:2015-11-14 20:45:14

标签: swift uiviewcontroller ios-extensions

尝试实现此目的时:

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 }

错误是误导还是我只是忽略了什么?我已尝试使用和不使用overridepublic作为方法,等等。没有运气。但是,如果它在UIViewController的子类上,而不是UIViewController本身,我可以覆盖它。

1 个答案:

答案 0 :(得分:1)

问题是你在扩展中有它。您无法覆盖扩展中类上定义的方法。基本上,扩展不是子类,尝试通过在扩展中实现新版本来重新定义类中存在的方法将失败。

请注意,这有效:

class ViewController: UIViewController {

    override var presentedViewController: UIViewController? {
        return UIViewController()
    }

}