2010-04-22 6 views
0

Je une vue principale où j'afficher une image, dans le procédé viewDidLoad:uniimageview pas mise à jour après une vue tranistion

ballRect = CGRectMake (posBallX, 144, 32.0f, 32.0f); theBall = [[UIImageView alloc] initWithFrame: ballRect]; [theBall setImage: [UIImage imageNamed: @ "ball.png"]]; [self.view addSubview: theBall]; [libération de laPalla];

De toute évidence, la valeur de posBallX est définie, puis mise à jour via un appel de méthode personnalisée plusieurs fois dans la même classe.

theBall.frame = CGRectMake(posBallX, 144, 32, 32); 

Tout fonctionne, mais quand je vais à une autre vue avec

[self presentModalViewController:viewTwo animated:YES]; 

et revenir avec

[self presentModalViewController:viewOne animated:YES]; 

l'image est affichée correctement après la méthode viewDidLoad est appelée (je récupère les valeurs avec NSUserDefaults) mais pas plus dans la seconde méthode. Dans le NSLog je peux même voir la nouvelle mise à jour de posBallX correctement, mais l'image n'est simplement plus montrée ... La même chose se produit avec un label, qui devrait imprimer la valeur de posBallX.

Donc, les choses ne fonctionnent pas si je reviens à la vueUne vue de la vue ... Une idée ???????

Merci beaucoup!

Répondre

0

Vous devez utiliser dismissModalViewControllerAnimated: pour revenir à viewOne from viewTwo au lieu d'essayer de présenter viewOne de manière modale.

Notez également que viewDidLoad est appelée une seule fois - après que la vue du contrôleur de vue a été chargée en mémoire. Si vous souhaitez effectuer une action dès qu'une vue revient à l'écran, vous devez le faire dans viewWillAppear:.

Ces deux points sont abordés dans la référence de classe UIViewController et dans le Guide de programmation de View Controller.

+0

Merci! Aujourd'hui, j'essaie votre solution et je vous le fais savoir. Tu étais très très gentil! Cependant ... Je me demande pourquoi le rejectModalViewControllerAnimated devrait fonctionner et celui que je n'utilise pas. Je vais relire les docs. L'utilisation de [self presentModalViewController: viewOne animé: YES] pour revenir au premier, viewDidLoad est à nouveau appelé. Mais plus logique est la méthode viewWillAppear ... Je vous le fais savoir! Merci! –

+0

Lorsque vous affichez viewOne de façon modale la deuxième fois, vous avez deux copies de viewOne dans la hiérarchie de vues. 'viewDidLoad' est appelée parce que vous avez alloué et initialisé le contrôleur de vue une deuxième fois. Vous avez juste besoin de rejeter viewTwo pour retourner à la viewOne d'origine. –

Questions connexes