2017-07-27 5 views
0

I installé un Pod Material et que pod a quelque chose comme ceci:Override conforme au protocole de Swift

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

Mais je dois moi-même conforme à ce protocole au même endroit:

Lorsque je tente d'étendre mon UIViewController avec UIViewControllerTransitioningDelegate puis je me suis une erreur:

redundant conformance to protocol.

Ce que je dois faire?

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

Est-il possible de passer outre la conformité de Pod avec mon propre?

+0

Votre superclasse a déjà confirmé le protocole –

+0

Il est pas une réponse à la question :) Désolé –

+2

Vous n'avez pas besoin d'ajouter le protocole à l'extension si elle est déjà implémentée par la classe. Et vous ne pouvez pas remplacer une méthode dans une extension, votre meilleur pari est de sous-classer la classe Pod et remplacer la méthode dans la sous-classe – DatForis

Répondre

0

La seule manière que je trouvais que Rhian est de créer une classe de BaseController séparée qui est juste une sous-classe de UIViewController

import UIKit 
class BaseController: UIViewController { 

} 

qui est placé dans un fichier seul qui n'importe pas matériel. Et tous les UIViewControllers que vous voulez remplacer dans UIViewControllerTransitioningDelegate doivent en être une sous-classe.

import UIKit 
import Material 
class ViewController: BaseController { 

} 

Cela rendra la compilation

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

Il n'est pas la solution la plus optimale, mais il fonctionne

Edit: Cela vous permettra d'utiliser des éléments de matériaux tels que les champs de texte et comme tout en ayant vous conservez la fonctionnalité par défaut de UIViewController sans les ajouts trouvés dans la bibliothèque