2010-04-15 5 views
0

J'essaie d'exécuter une action lorsque l'application démarre. L'action checkAtStart est censée afficher une alerte s'il n'y a pas de texte dans field1 et masquer startView s'il y a du texte dans field1. checkAtStart fonctionne correctement s'il est assigné à un bouton, mais quand j'essaye de l'exécuter en utilisant (void) awakeFromNib, l'alerte s'affichera n'importe quoi et startView ne se cachera jamais. C'est probablement quelque chose de vraiment simple que j'oublie. Toute aide est appréciée!Utilisation de (void) awakeFromNib

Voici mon code:

- (void)awakeFromNib { 
[self checkAtStart:self]; 
} 

- (IBAction)checkAtStart:(id)sender 
{ 
if (field1.text == nil || [field1.text isEqualToString:@""]) { 
    NSString *msg = nil; 

    msg = nil; 

    UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:@"Test Message" 
     message:@"Test Message" 
     delegate:self 
     cancelButtonTitle:@"Close" 
     otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
    [msg release]; 
} 
else 
{ 
    startView.hidden = YES; 
} 
} 

Répondre

2

Je suppose que tout ce code est dans un contrôleur de vue d'une certaine sorte.

-awakeFromNib sera envoyé au contrôleur après qu'il a été chargé à partir d'un NIB. À ce stade, il n'y a encore aucune valeur dans le champ de texte sauf si vous mettez ces valeurs dans le fichier NIB.

Vous avez probablement utilisé -viewDidLoad ou d'autres messages d'événement de vue pour attribuer une valeur à votre modèle dans le champ de texte. C'est ce qui fait fonctionner votre IBAction lorsqu'il est assigné à un bouton.

+0

Vous avez raison à propos de -viewDidLoad. Puisque -viewDidLoad attribue la valeur, j'ai inclus [self checkAtStart: self]; à la fin, et cela semblait faire l'affaire. Merci pour la clarification! – potato

Questions connexes