2010-12-03 15 views
0

J'implémente une fonctionnalité similaire à la pagination avec UITableView. Le contrôleur de vue est hérité de UIViewController et possède une vue de table liée à Nib avec une sortie. Je maintiens un tableau pour stocker les objets courants visibles dans la vue tabulaire. En cliquant sur le bouton suivant et précédent, je supprime AllObjects, puis j'ajoute de nouveaux objets à afficher, suivi de [self.tableView reloadData]. L'application semble planter à ce point. J'utilise iOS 4.1 pour la même chose.iPhone UITableVIew reloaddata provoque le crash de l'application

En utilisant iOS 3.1, la fonctionnalité semble fonctionner.

+0

Quelle est l'erreur? À quoi ressemble la pile lorsqu'elle se bloque? Nous aurons besoin de plus d'informations pour être utile. –

+0

0x06d61dc0 dans ?? 0x0269bb6c dans CFRelease 0x0277d959 dans - [__ NSArrayM removeObjectAtIndex:] 0x0272d973 dans - [NSMutableArray removeAllObjects] 0x003ce48d dans - [UITableView reloadData] 0x0003b1a8 dans - [FlightStatusResultsByRoute refreshDisplay:] à FlightStatusResultsByRoute.m: 158 0x000d621a dans __NSFireDelayedPerform 0x02765f73 dans __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ 0x027675b4 dans __CFRunLoopDoTimer 0x026c3dd9 dans __CFRunLoopRun 0x026c3350 dans CFRunLoopRunSpecific 0x026c3271 dans CFRunLoopRunInMode 0x02fdf00c dans GSEventRunModal 0x02fdf0d1 dans GSEventRun – sageo

+0

Y Vous pouvez essayer de mettre le tableau à zéro après avoir nettoyé le tableau. Semblez la cellule du tableau essayez de lire les données du tableau avant de recharger. – WaiLam

Répondre

1

Je pense qu'il doit être lié juste au moment de faire les choses (mise à jour de la source de données, déléguer et recharger les données)

Même si pas ... ce projet fait déjà ce que vous voulez faire, je crois: https://github.com/honcheng/PanelTableView et vous pouvez trouver une vidéo de ce qu'il fait ici: http://www.honcheng.com/

Je ne l'ai pas essayé, mais semble fonctionner;)

+0

datasource et delegate sont mis à la classe UIViewCOntroller dans le NIB.i ne pense pas que nous devons mettre à jour avec mon implémentation – sageo

+0

Le problème est que la fonctionnalité fonctionne dans ios 3.1 mais pas dans 4.0 et au-dessus – sageo

0

il ressemble à quelque chose devient trop libéré, ou peut-être trop enlevé. Je vois un [NSMutableArray removeAllObjects] suivi d'un [NSMutableArray removeObjectAtIndex], ce qui serait un réel problème.

+0

si c'était le problème avec la mémoire gestion, il n'aurait pas dû fonctionner avec iOS 3.1, mais au contraire cela fonctionne. – sageo

+0

Ce n'est pas le cas, malheureusement. Il y a eu beaucoup de changements dans l'OS, et des choses subtiles peuvent avoir un effet énorme. Les modifications de gestion des threads peuvent modifier considérablement l'ordre dans lequel les événements se produisent, par exemple, et ce qui était un problème potentiel sous un système d'exploitation antérieur, mais qui n'a tout simplement pas apparu, peut apparaître soudainement sous un nouveau système d'exploitation. Le commentaire de WaiLam sur la suppression du tableau est un bon: je suppose que si vous le placez à zéro après l'avoir vidé et avant de le remplir, vous verrez que l'erreur s'arrête (mais la nouvelle table sera probablement vide). –