覆盖符合Swift

时间:2017-07-27 06:49:00

标签: ios swift override swift-protocols

我安装了一个Pod Material,该pod有类似的内容:

extension UIViewController: UIViewControllerTransitioningDelegate {
    //here is the method to conform protocol
}

但我需要在同一个地方遵守该协议:

当我尝试使用UIViewController扩展UIViewControllerTransitioningDelegate时,我收到了错误消息:

  

与协议的冗余一致性。

我需要做什么?

extension UIViewController: UIViewControllerTransitioningDelegate {
    //my OWN implementation here I need
}

有没有办法用我自己的方式覆盖Pod的一致性?

1 个答案:

答案 0 :(得分:0)

我找到的唯一方法是创建一个单独的BaseController类,它只是UIViewController的子类

import UIKit
class BaseController: UIViewController {

}

仅放置在不导入Material的文件中。 并且要覆盖UIViewControllerTransitioningDelegate的所有UIViewControllers都应该是它的子类。

import UIKit
import Material
class ViewController: BaseController {

}

这将使其编译

extension ViewController: UIViewControllerTransitioningDelegate{
    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return nil
    }
}

这不是最佳解决方案,但它可以正常工作

编辑:这将允许您使用像文本字段等材质元素,同时保留UIViewController的默认功能,而无需在库中找到添加内容