J'ai un OC UIViewController
catégorie, qui decleared une méthode de classe de UIViewController
Comment remplacer une méthode de catégorie oc dans .swift
+(BOOL)hasStoryBoard;
Et j'importer également cette catégorie dans xxx-Bridging-Header.h
fichier
Ma classe rapide CustomVC
est hérité UIViewController. Je souhaite remplacer +(BOOL)hasStoryBoard
pour donner une valeur de type BOOL. Cette méthode sera appelée dans une autre classe pour déterminer la fonction de la nouvelle instance de CustomVC
.
Mais dans ma méthode CustomVC.swift je ne trouve pas comme ceci:
override class func hasStoryBoard()->bool{}
Je dois remplacer cette méthode pour donner un YES
, ou donner une sous-classe est NO
, ainsi de suite ...
J'ai cherché ce site et je l'ai trouvé Swift: How to call a category or class method from Objective-C. Dans cette discussion, expliqué et vous dire comment appeler la méthode, pas comment remplacer la méthode.
Pouvez-vous trouver une solution à surcharger la méthode de classe de catégorie oc? Ou donnez une solution de contournement dans mon cas.
Tout mon code est:
@interface UIViewController (StoryBoard)
+(BOOL)hasStoryBoard;
-(void)haha;
@end
.
@implementation UIViewController (StoryBoard)
static BOOL hasStoryboard = NO;//默认没有
+(BOOL)hasStoryBoard{
return hasStoryboard;
}
-(void)haha{}
@end
.
class CustomVC: UIViewController {
//this override is correct,have syntax input prompt
override func haha() {
}
//this override is incorrect ,no syntax input prompt
override func hasStoryBoard()->Bool{
return true
}
}
Avez-vous importé l'en-tête de catégorie dans l'en-tête de pontage? – deadbeef
@deadbeef Je l'ai fait, et je teste la méthode d'instance de la catégorie OC peut être trouvée dans le fichier .swift, mais la méthode de la classe OC ne peut pas être trouvée dans le fichier .swift.Ceci doit être mentionné dans le lien ci-dessus, mais la question est: ? –
Quelle erreur obtenez-vous si vous implémentez le remplacement de toute façon? 'override class func hasStoryBoard() -> Bool {return vrai}' – deadbeef