2009-09-13 6 views
0

Je ajoute une étiquette à la vue UILabel * titleLabel = [[UILabel alloc] initWithFrame: CGRectMake (10.0f, 320.0f, 300.0f, 75.0f)]; [titleLabel setText: [instance BusinessLogic] .homeMessage];Comment vérifier si un contrôle a déjà été ajouté à la vue?

puis je passe à une autre vue et je reviens. Cela a pour résultat d'avoir deux contrôles d'étiquette l'un sur l'autre. Ce que je veux faire est: vérifier si le contrôle d'étiquette a déjà été ajouté. Si ce n'est pas le cas, ajoutez-le et définissez le texte. Si c'est le cas, il suffit de définir le texte.

Quelle est la meilleure façon de le faire. Je veux apprendre la bonne façon car j'ai déjà quelques idées dégoûtantes sur la façon de le faire.

Merci. mE

Répondre

3

Vous pouvez vérifier la propriété superview:

if (titleLabel.superview == self) { 
} 

(en supposant "soi" est la vue que vous ajoutez l'étiquette)

+0

je voudrais disons, il devrait d'abord déplacer la variable UILabel en dehors de la fonction. Puis vérifiez si rien ou pas. – CiNN

+0

Je suis d'accord avec CiNN - merci les gars – amok

1
if (titleLabel.superview != someView) { 
    [someView addSubview:titleLabel]; 
} 
1

Ajouter une propriété à votre classe stocker une référence à votre étiquette. Si vous ne le stockez pas partout, vous ne pouvez pas modifier le texte facilement à l'avenir:

// header 
@property (nonatomic, retain) IBOutlet UILabel *titleLabel; 
// implementation 
@synthesize titleLabel; 

Créer l'instance UILabel si titleLabel est nil et lui attribuer:

if (self.titleLabel == nil) { 
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0f, 320.0f, 300.0f, 75.0f)]; 
    self.titleLabel = titleLabel; 
    [titleLabel release]; 
    // add to the view here. 
} 
self.titleLabel.text = newText; 
+0

petite faute de frappe: @synthesis -> @synthesize –

Questions connexes