2010-06-16 6 views
0

Voir le code icipassage Valeur de l'objet à UIView

@interface StaticView : UIView { 
    Properties *prop; 
} 
@property (retain) Properties *prop; 
@end 

et je joins ce point de vue via le code

[super viewDidLoad]; 
StaticView *sView = [[StaticView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
sView.prop.glowIntensity = 0.85f; 

[self.view addSubview:sView]; 

mais dans mon drawRect Méthode de StaticView je suis toujours reçois prop.glowIntensity = 0,0000

- (void)drawRect:(CGRect)rect { 
     NSLog(@"%f", prop.glowIntensity); 
} 

Voici mon Properties.h

@interface Properties : NSObject { 
    UIColor *bgColor; 
    UIColor *foreColor; 
    float glowIntensity; 
} 
@property(retain) UIColor *bgColor; 
@property(retain) UIColor *foreColor; 
@property float glowIntensity; 

-(void) initbgColor:(UIColor *)bgC foreColor:(UIColor *)fC glowIntensity:(float) gI; 
@end 

ici est la mise en œuvre Properties.m

#import "Properties.h" 

@implementation Properties 

@synthesize bgColor; 
@synthesize foreColor; 
@synthesize glowIntensity; 

-(void) initbgColor:(UIColor *)bgC foreColor:(UIColor *)fC glowIntensity:(float) gI 
{ 
    self.bgColor = bgC; 
    self.foreColor = fC; 
    self.glowIntensity = gI; 

} 
@end 

Comment puis-je passer juste valeur à ma classe StaticView?

+0

Nous devons également examiner votre implémentation de 'Properties'. Peut-être que l'ivar 'glowIntensity' n'est pas déclaré correctement? – bddckr

+0

Code pour Properties.h et Properties.m ajouté – coure2011

Répondre

2

Il vous semble ne pas créer ou définir la variable d'accessoire de votre point de vue avant de l'utiliser - par défaut, il est égal à zéro et en appelant glowIntensity sur l'objet néant juste 0.

3

Essayez de changer votre code à ceci:

@property (assign) float glowIntensity;  // We don't want to retain the float like done by default (at least I think it's default) 

- (void)initWithBgColor:(UIColor *)bgC foreColor:(UIColor *)fC glowIntensity:(float)gI { 
    if (self = [super init]) {  // We need to init self 
     bgColor = bgC;    // Don't use the accessors in -init 
     foreColor = fC; 
     glowIntensity = gI; 
    } 
} 

Editer: Je pense que Vladimir a raison aussi.

+0

assign est un attribut par défaut pour une propriété, il n'est donc pas nécessaire de le définir (en fait le compilateur ne vous laissera pas créer de propriété retain pour les types simples). Bon point sur la méthode initWithBgColor. – Vladimir

+0

Merci pour la clarification Vladimir! J'ai juste oublié l'erreur que le compilateur vous donne. – bddckr

Questions connexes