2010-05-10 5 views
0

Je peux publier du code, bien que je ne sache pas trop par où commencer. J'ai un UITableView avec des cellules personnalisées, au niveau intermédiaire d'un schéma UINavigationView à trois niveaux. Lorsque je descends au niveau inférieur et que je vois des détails sur mes données, puis j'utilise le bouton de retour en haut à gauche, mon affichage de table revient jusqu'au sommet, plutôt que de descendre à l'endroit où je l'ai vu pour la dernière fois . Où devrais-je regarder à ce sujet?UITableView ne se souvient pas de sa position de défilement

EDIT:

Voici le code dans le EventsTableViewController pour charger une instance de EventsDetailViewController et le pousser sur le contrôleur de navigation:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSMutableArray *events = [DataManager sharedDataManager].eventList; 

    Event *selectedEvent = [events objectAtIndex:[indexPath row]]; 
    EventsDetailViewController *detailController = [[EventsDetailViewController alloc] initWithNibName:@"EventsDetailView" bundle:nil]; 
    [detailController loadEvent:selectedEvent]; 

    MyAppDelegate *del = (MyAppDelegate *)[UIApplication sharedApplication].delegate; 
    [del.navigationController pushViewController:detailController animated:YES]; 
    [detailController release]; 

} 

Il n'y a rien dans mon EventsTableViewController à propos de recharger la table, dans la mesure Je peux voir - je n'ai pas implémenté viewWillAppear ou viewDidLoad ou aucun d'entre eux.

+0

Pouvez-vous envoyer du code depuis l'endroit où vous poussez le niveau inférieur jusqu'au contrôleur de navigation? – MrHen

Répondre

0

J'ai accidentellement instancié une nouvelle copie de ma vue de table chaque fois que j'ai atteint ce niveau de navigation. Tout est maintenant réglé et ce n'est plus un problème.

2

Êtes-vous par hasard recharger la table où vous ne devriez pas être? Dans la méthode ViewWillAppear par exemple?

+0

Dans mon contrôleur de table? Non, je n'ai implémenté aucune de ces méthodes viewWill ... ou viewDid .... –

0

J'ai une question très similaire. Quand je vais au chatView, qui est un UIViewController appartenant à la navigationController et a une tableView comme une sous-vue, puis je défile à un certain point, puis je reviens, puis je reviens à la discussion, il commence à la top encore. J'alloue tableView dans loadView de la vue de chat, ainsi la tableView est réallouée chaque fois que je reviens. Mais, n'est-ce pas la norme? Comment puis-je toujours faire défiler vers le bas comme l'application iPhone Messages et afficher la barre de défilement pendant quelques secondes en bas?

Voici le code:

http://github.com/acani/acani-chat/blob/master/Lovers2/Classes/ChatViewController.m#L184

Merci!

Matt

+0

Essayez de placer votre activité de création de table dans '-viewDidLoad' plutôt que dans -loadView'. Consultez également les fonctions de défilement programmatique dans UITableView, il existe des moyens de faire défiler explicitement vers la cellule du bas. –

0

vous faites:

[self presentViewController:navController animated:YES completion:nil]; 

où l'auto est tableviewcontroller? Essayez ceci:

[self.navigationController presentViewController:navController animated:YES completion:nil]; 
+0

J'ai eu un problème similaire, je pensais juste qu'il serait utile de mettre aussi dans ma solution. – ajayjapan

Questions connexes