2010-09-30 6 views
1

J'ai un fichier1.h fichier1.m fichier1.xib le xib a un écran vide avec une étiquette dessus. J'ai un autre fichier qui fait un calcul arbitraire et mettra à jour l'étiquette comme les boucles de calcul. Où dois-je déclarer la valeur UILabel * dans fichier1.h ou le fichier qui effectue les calculs?Où mettre la déclaration dans l'objectif C

Merci de conduire.

Répondre

0

L'étiquette doit être déclarée comme un IBOutlet dans votre fichier .h:

@interface File1 { 
    IBOutlet UILabel *mylabel; 
} 

@end 

Assurez-vous que vous vous connectez cette sortie à votre étiquette dans Interface Builder.

+0

Il ne serait probablement pas blessé de revoir également les directives de gestion de la mémoire pour les objets NIB (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmNibObjects.html#//apple_ref/doc/uid/TP40004998- SW2) pour vous assurer que votre contrôleur de vue se comporte correctement dans des situations de faible mémoire. –

1

L'étiquette doit être déclarée comme une IBOutlet comme Josh l'a dit dans votre fichier .h comme ci-dessus et oui connectez votre étiquette dans Interface Builder.

Vous pouvez également définir votre étiquette comme @property dans le fichier .h et la synthétiser dans un fichier .m pour pouvoir accéder facilement à "myLabel" en utilisant. opérateur.

maintenant mettre à jour votre étiquette avec vos calculs, il suffit de définir la fonction updateLabel dans le fichier .h et écrivez votre code pour implémenter la mise à jour dans le fichier de mise en œuvre comme suit:

 

@interface File1 { 
    IBOutlet UILabel *myLabel; 
} 

@property (nonatomic, retain) IBOutlet UILabel *myLabel; 

- (void)updateLabel:(id)sender; 

@end 
 

@implementation File1 
@synthesize myLabel; 

- (id)init { 
    if ((self = [super init])) { 
      // init custom work here 
    } 
    return self; 
} 

- (void)updateLabel:(id)sender { 

//Here sender can be any button who call this function or send it nil if not 

     //update your label here 
     myLabel.text = @"Updated Text"; 
     ...... 
} 

@end 
 
Questions connexes