2011-10-05 3 views
0

Je construis une application iPhone et il est vous le savez plusieurs vues pour basculer entre eux, mais je fais face à un problème quand je passe entre eux et son comme celui-ci:Comment basculer entre les UIViews sans perdre les données?

Le second point de vue que je passer à a une UITableView et tous les le temps montre son chargement avec 4 lignes mais quand je passe à la troisième vue et essaie de revenir à la deuxième qui est la table toutes les lignes disparaissent.

Mon modèle d'iPhone est une application basée sur la vue. Le code utilisé pour basculer entre les vies comme ceci:

if (self.webController==nil) { 
    SearchWebViewController *d=[[SearchWebViewController alloc] initWithNibName:@"SearchWebViewController" bundle:nil]; 
    self.webController=d; 
    [d release]; 
} 
[UIView beginAnimations:@"flipping view" context:nil]; 
[UIView setAnimationDuration:0.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
         forView:self.view cache:YES]; 
[self.view addSubview:webController.view]; 
[UIView commitAnimations]; 

Comment basculer entre les vues et conserver les données dedans?

Toute idée s'il vous plaît et garder les choses simples, autant que possible :)

+0

Montrez-nous le code de UITableView et comment vous créez sa source de données. – Bourne

Répondre

0

Vous devez comprendre comment fonctionne UITableView. Elle ne "mémorise" pas les lignes affichées, mais appelle cellForRowAtIndexPath pour chaque ligne à afficher, que ce soit lorsque vous faites défiler ou lorsque vous masquez puis réaffichez la table. Par conséquent, vous devez conserver une "copie de sauvegarde" de toutes les lignes que vous affichez ou pourriez afficher - celles qui sont à l'écran et celles qui défilent en haut ou en bas.

Habituellement, cette "copie de sauvegarde" est un NSMutableArray de NSMutableDictionaries ou d'objets personnalisés, chacun représentant une ligne. Lorsque cellForRowAtIndexPath est appelé, vous accédez aux valeurs de la "copie de sauvegarde" et créez une cellule pour présenter les données. Si quelque chose est changé dans la cellule, vous copiez cette modification sur la "copie de sauvegarde".

Questions connexes