2017-09-17 15 views
2

Je suis confronté à ce problème étrange et je ne sais pas pourquoi. J'ai une classe View qui a une variable délégué d'un protocole:L'objet de la sous-classe ne montre pas la variable de la classe parente dans swift

class View: UIView { 
    weak var delegate : SampleProtocol? 
} 

protocol SampleProtocol: Class { } 

Maintenant cette classe View est la classe parente d'une autre classe:

class AnotherView : View 

Lorsque je crée un IBOutlet de AnotherView en une classe Objective-C n'est pas capable d'accéder à la variable delegate et non visible dans le fichier swift.h non plus. Est-ce que quelqu'un pourrait expliquer ce que je fais mal ici?

+1

Essayez d'utiliser @objc, aussi faire votre sous-classe de protocole de NSObject 'protocole SampleProtocol: NSObject {}' –

+1

'class' devrait être minuscule pour un – vacawama

+0

Aussi' sampleProtocol' devrait être en majuscule dans la déclaration 'delegate' –

Répondre

3

Vous devez définir votre protocole lisible par Objective-C en ajoutant @objc comme je l'ai dit dans mes commentaires

@objc protocol SampleProtocol: class { } 

Après cela, vous devez ajouter cette ligne dans votre .m

#import "YourProjectName-Swift.h" 

Code complet

import UIKit 

@objc protocol SampleProtocol: class { } 

class View: UIView { 
    weak var delegate : SampleProtocol? 
} 

class AnotherView : View{ 

} 

partie du patrimoine ont pas d'effets secondaires, a été testé

Maintenant, vous pouvez accéder à déléguer la propriété de votre classe View sans aucun problème comme cela est montré dans cette image

enter image description here

+1

Cela a fonctionné, Merci. – Mini2008