2010-07-28 5 views
2

Mon application dispose d'une vue défilante paginée avec une tableView dans chaque page. Au bas de l'écran, j'ai placé une bannière publicitaire, qui devrait masquer que les annonces deviennent indisponibles et réapparaissent quand ils sont chargés. Cette bannière est placée en dessous de la vue défilante et n'est pas affectée par le fait que l'utilisateur fasse défiler les pages de gauche à droite ou de haut en bas de la table.UIScrollView/UITableView se bloque lors du redimensionnement de l'image

Je redimensionnez que ScrollView en cas de besoin avec quelque chose comme ceci:

NSInteger offset = -50; 
if (self.bannerIsVisible) offset = 50; 
CGRect frame = scrollView.frame; 
frame.size.height += offset; 
scrollView.contentSize = CGSizeMake(frame.size.width * pages, frame.size.height); 
scrollView.frame = frame; 

Cette dernière ligne me cause des problèmes. Parfois, tout fonctionne très bien et redimensionne parfaitement le scrollView et tout son contenu. D'autres fois, il se bloque avec cela dans la console:

2010-07-27 10:25:31.779 MyAPP[8026:207] -[__NSArrayM tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x736eb20 
2010-07-27 10:25:31.781 MyAPP[8026:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM tableView:cellForRowAtIndexPath:]: unrecognized selector sent to instance 0x736eb20' 
*** Call stack at first throw: 
(
    0 CoreFoundation     0x026cb919 __exceptionPreprocess + 185 
    1 libobjc.A.dylib    0x028195de objc_exception_throw + 47 
    2 CoreFoundation     0x026cd42b -[NSObject(NSObject) doesNotRecognizeSelector:] + 187 
    3 CoreFoundation     0x0263d116 ___forwarding___ + 966 
    4 CoreFoundation     0x0263ccd2 _CF_forwarding_prep_0 + 50 
    5 UIKit       0x003a3a3f -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 619 
    6 UIKit       0x00399ad2 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:] + 75 
    7 UIKit       0x003ae40c -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1561 
    8 UIKit       0x003a60d7 -[UITableView(_UITableViewPrivate) _setNeedsVisibleCellsUpdate:withFrames:] + 372 
    9 UIKit       0x003a37cd -[UITableView setFrame:] + 266 
    10 UIKit       0x00367ae8 -[UIView(Geometry) resizeWithOldSuperviewSize:] + 385 
    11 UIKit       0x0036ba2b -[UIView(Geometry) resizeSubviewsWithOldSize:] + 273 
    12 UIKit       0x00367f79 -[UIView(Geometry) setFrame:] + 497 
    13 UIKit       0x0038085f -[UIScrollView setFrame:] + 617 
    14 MyAPP       0x0000a678 -[MyViewController toggleBanner] + 893 

Pourquoi cela se produit-il, et pourquoi seulement parfois? Plus précisément, comment puis-je modifier de manière fiable la taille de mon scrollView?

+0

avez-vous essayé le débogage étape par étape à travers vos tables méthode cellForRowAtIndexPath? De mon point de vue, il semble qu'il y ait un appel invalide dans cette méthode. pas 100% sûr dur. – samsam

Répondre

2

Cela ressemble beaucoup à l'objet qui a été la source de données de votre vue table a été publié et donc la méthode déléguée a été envoyée à un objet différent. Il s'agit d'un problème de gestion de la mémoire, vous pouvez donc essayer d'exécuter votre application avec l'instrument Zombies pour voir si elle a détecté le problème.

Questions connexes