2016-05-13 3 views
0

verwenden, können Sie diesen Code sehen:Wie Delegierter in iOS

#import "EgKernalVClr.h" 

@class EgCoreNavigationItemCustomView ; 
@class EgCoreNavigationLeftBarCustomView ; 
@class EgCoreNavigationRightBarCustomView ; 
@class EgCoreNavigationItemBarCustomViewModel ; 


@protocol EgCoreVClrNavClrDelegate ; 

@interface EgCoreVClr : EgKernalVClr{ 
@protected 
    EgCoreNavigationItemCustomView *_navigationItemCustonView ; 
    EgCoreNavigationLeftBarCustomView *_navigationLeftBarCustonView ; 
    EgCoreNavigationRightBarCustomView *_navigationRightBarCustonView ; 
} 

@property (nonatomic , assign) EgCoreVClrNavClrDelegate delegate ;//Error 
@property (nonatomic , assign) BOOL autoAdjustLeftBarCustomView ; 
@property (nonatomic , assign) BOOL hiddenLeftBarCustomView ; 
@property (nonatomic , strong) EgCoreNavigationItemBarCustomViewModel *navigationItemCustomViewModel ; 

- (void) addRightCustomViewWithModel:(EgCoreNavigationItemBarCustomViewModel*)customViewModel ; 

@end 




@protocol EgCoreVClrNavClrDelegate <NSObject> 
- (BOOL) leftTriggerAction:(EgCoreNavigationLeftBarCustomView*)sender withEgCoreVClr:(EgCoreVClr *)egCoreVClr ; 
- (void) rightTriggerAction:(EgCoreNavigationRightBarCustomView*)sender withEgCoreVClr:(EgCoreVClr *)egCoreVClr ; 
@end 

dieser Code: @property (nonatomic, zuweisen) EgCoreVClrNavClrDelegate delegieren; // Fehler

der Xcode Wurf-Fehler: Unbekannter Typ Name 'EgCoreVClrNavClrDelegate';

Warum war die Aussage dort ein Problem?

enter image description here

Antwort

2

Sie müssen delegieren Eigenschaften wie folgt definieren:

@property (nonatomic, weak) id<EgCoreVClrNavClrDelegate> delegate; 

Und es so in der Klasse nennen:

// Notify delegate if requested 
if (_delegate && [_delegate respondsToSelector:@selector(bugReporterWillShowForm:)]) { 
    [_delegate yourProtocolMethodWithOrWithoutParams]; 
} 
+1

Ich denke, du hast Recht. –

+0

Sie müssen '_delegate' nicht auf' nil' prüfen, bevor Sie 'anyToSelector' überprüfen - das Senden von Nachrichten an nil wird in diesem Kontext 0 zurückgeben, und daher wird' if' nicht ausgelöst, wenn '_delegate'' nil ist »Wie auch immer. – Hamish

0

delegate muss object that conforms to protocol

@property (nonatomic, weak) id<EgCoreVClrNavClrDelegate> delegate; 
eingegeben werden

und normalerweise möchten Sie, dass die Eigenschaft weak lautet.

+0

Normalerweise nicht, aber Sie müssen es auf schwach setzen, um zu vermeiden, Zyklus zu behalten –

+0

das ist, was Sie normalerweise wollen. – vikingosegundo