2012-06-29 1 views
1

Comment mettre à jour une étiquette en cliquant sur le bouton quand les deux sont dans différentes classes de contrôleurs uiview ... lorsque le bouton est cliqué, l'étiquette doit être mise à jour ... j'ai essayé plusieurs fois. .but ne se produit pasMise à jour d'un libellé via le bouton d'une vue différente

un de plus Question est mon application fonctionne bien dans le simulateur, mais quand je cours sur l'appareil le bouton créé dynamiquement (image du bouton) n'est pas visible, l'action est performante mais l'image manque .. je sais pourquoi?

+0

Ajoutez également du code. – rishi

+0

un autre problème est que lorsque l'application est en cours d'exécution de la partition, les images correctes sont cochées avec le fichier png n correct avec le mauvais fichier png, mais lorsque l'application est fermée et redémarré le score est actualisé .... si nous revenons en arrière le score et les images sont ok..but quand l'application est fermée, le score est 0 ... – Cgs

+0

Comment verrouiller et déverrouiller les niveaux d'un jeu grâce au codage .... J'ai utilisé level.enabled = NO; mon premier niveau d'une application de jeu est ouvert et d'autres niveaux sont verrouillés..si j'ai gardé une condition et une fois la condition est satisfaite, il déverrouille le niveau..mais mon problème est que lorsque j'appuie sur le bouton de retour puis à nouveau la débloquer niveau qui sont ouverts ... quelqu'un peut-il m'aider dedans ..... Merci à adv ... – Cgs

Répondre

7

Il existe plusieurs façons de maintenir la communication entre les vues (voir les contrôleurs, en fait) dans iOS. Le plus facile pour moi est d'envoyer des notifications. Vous ajoutez un observateur pour une notification dans la vue que vous souhaitez modifier, et à partir de la vue qui déclenchera la modification, vous publiez la notification. De cette façon, vous dire de ViewController B à ViewController A qui « quelque chose est prêt, faire le changement »

Ceci, bien sûr, exige votre point de vue du récepteur à créer et déjà être à l'écoute de la notification.

En ViewController B (émetteur)

- (void)yourButtonAction:(id)sender 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"theChange" object:nil]; 
} 

Dans ViewController A (récepteur) Ajouter l'observateur à écouter la notification:

- (void)viewDidLoad 
{ 
    //......... 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(makeTheChange) name:@"theChange" object:nil]; 
} 

Ne pas oublier de l'enlever (dans ce cas , sur dealloc)

- (void)dealloc 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"theChange" object:nil]; 
    [super dealloc]; 
} 

Et enfin, e La méthode qui mettra à jour votre étiquette

- (void)makeTheChange 
{ 
    yourLabel.text = @"your new text"; 
} 
+0

Merci pour votre commentaire/réponse..will try this. – Cgs

+0

son ne fonctionne pas :( – Cgs

+0

Où échoue-t-il? Quelle méthode ne s'appelle pas? Certains détails seraient grands –

0

Vous ne savez pas si c'est une bonne solution, mais vous pouvez stocker le texte dans un NSString global en cliquant sur le bouton, puis mettre cette chaîne dans votre étiquette lors du chargement de la deuxième vue.

+0

comme je l'ai utilisé plist pour le score, les images et les conseils ... j'ai donc besoin de stocker tout cela texte des étiquettes en db? – Cgs