2011-08-18 2 views
2

J'ai créé un texte UILabel statique dans Interface Builder, mais lors de l'exécution de l'application. l'étiquette n'est pas montrée dans l'application elle-même, je ne sais pas pourquoi.UILabel statique ne s'affiche pas dans uiview

toutes les autres choses comme le champ de texte, les boutons sauf que l'étiquette ne fonctionne pas quelqu'un peut-il me dire ce qui s'est mal passé?

C'est dans IB

enter image description here

c'est dans l'App

enter image description here

enter image description here

#import "SettingsViewController.h" 

@implementation SettingsViewController 

@synthesize drinkLimitText; 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 

    appDelegate = (DrinkTabsAndNavAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [super viewDidLoad]; 

    NSLog(@"subView:%d",[self.view.subviews count]); 
} 


- (void) viewWillAppear:(BOOL)animated { 


    if ([appDelegate.drinkLimit floatValue] >= 0) 
     drinkLimitText.text = [NSString stringWithFormat:@"%.0f", [appDelegate.drinkLimit floatValue]]; 
    else 
     drinkLimitText.text = @"0"; 

    [super viewWillAppear:animated]; 
} 

- (IBAction)textFieldDoneEditing:(id)sender{ 
    NSDecimalNumber *tempValue = [[NSDecimalNumber alloc] initWithString:drinkLimitText.text]; 
    if (tempValue == [NSDecimalNumber notANumber] || [tempValue doubleValue] < 0) { 
     NSString *msg = [[NSString alloc] initWithFormat: @"Make sure to enter a positive number."]; 
     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"Hang on..." 
           message:msg 
           delegate:self 
           cancelButtonTitle:@"Ok" 
           otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
     [msg release]; 
    } else { 
     [sender resignFirstResponder]; 
     [self updateDrinkLimit]; 
    } 
    [tempValue release]; 
} 

- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (void)updateDrinkLimit { 

    NSDecimalNumber *newLimit = [[NSDecimalNumber alloc] initWithString:[drinkLimitText text]]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([newLimit floatValue] >= 0) { 
     [defaults setFloat:[newLimit floatValue] forKey:kDrinkLimitKey]; 
     appDelegate.drinkLimit = newLimit; 
    } else { 
     [defaults setFloat:0 forKey:kDrinkLimitKey]; 
     appDelegate.drinkLimit = 0; 
    } 
    [newLimit release]; 
} 

- (IBAction)openOntrackWebsite { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.ontrack.org.au/"]]; 
} 

- (void)dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    [drinkLimitText release]; 

    [super dealloc]; 
} 

@end 

Répondre

5

Clean votre projet et build à nouveau.

C'est l'un des problèmes les plus communs avec Xcode.

+0

nettoyer déjà tout mon dossier de projet, toujours le même problème – Desmond

+0

Ensuite, vérifiez que vous avez ajouté des étiquettes correctement dans votre vue. – Devang

+0

vérifier, ne fonctionne toujours pas. le seul 2 est connecté avec IBOutlet, le reste est statique, la couleur cochée n'est pas blanche – Desmond

1

Assurez-vous que vous avez enregistré votre projet. Vérifiez également si vous avez ajouté addSubView à votre code. propre et puis exécutez ... Cela permettra de résoudre votre problème

espère que cela aide ....

+0

Nope i isabelle avoir une commande addSubview, une chose drôle est que, peu importe ce que j'ajouté dans la vue, rien est montré hors champ texte – Desmond

1

Votre hiérarchie dans le constructeur d'interface doit être comme indiqué ci-dessous:

UIView 
    --- Label 
    --- TextField 
    --- Label 
    --- UIButton 

Je soupçonne que ce est:

UIView 
    --- Label 
    --- UIButton 
Label 
Label 
1

Cet exemple xib provient-il de votre MainWindow ou de votre ViewController pour l'élément de la barre d'onglets? Aussi, vous souvenez-vous de changer le nom de NIB dans les propriétés de contrôleur de vue au nom, habituellement appelé SettingsViewController (le nom du fichier de xib), qui est ce qui est habituellement produit si vous avez utilisé Xcode pour créer la classe? Dans votre capture d'écran, il est indiqué "View from 'Settings" ", ce qui peut ne pas être correct.

+0

hi macboy, l'exemple xib provient de la fenêtre principale, le paramètre est le nom que je renommer pour la classe settingViewController – Desmond

2

Mon problème n'a pas été correctement Définition de contraintes. Assurez-vous de définir les contraintes de largeur et de hauteur et ajoutez les contraintes manquantes en cliquant sur le bouton de contrainte du triangle.

Après la fixation de contraintes, ils apparaissent.