UITableView de charge d'une Cellule Personnalisé de PLUME fichier jette NSInternalInconsistencyException
Dans une application ios, j'ai un UITableView. Dans le cellForRowAtIndexPath
méthode que j'ai besoin de retourner une cellule personnalisé en utilisant son nom de PLUME. Pour cela j'ai utiliser loadNibNamed
. (Je vais remplir les données dans la cellule après le chargement dans le "willDisplayCellforRowAtIndexPath')
MyItemCell est un fichier XIB (MyItemCell.xib) qui contient 2 UIImageView et un UIButton (Chaque élément a une balise)
C'est mon code:
Dans mon viewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [ViewHelper loadCustomCellWithNibName:@"MyItemCell" owner:self];
}
Et la méthode de charge de la cellule Personnalisé de PLUME
+ (UITableViewCell *) loadCustomCellFromNib:(NSString *)nibName owner:(id)owner
{
UITableViewCell *cell = nil;
NSArray *nibObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:owner options:nil];
if([nibObjects count] > 0 )
{
cell = [nibObjects objectAtIndex:0];
}
else
{
NSLog(@"Failed to load %@ XIB file!", nibName);
}
return cell;
}
Tout fonctionne correctement dans tous les tests. Cependant, j'ai reçu un crash de certains utilisateurs qui j'ai été incapable de se reproduire.
C'est le crash:
NSInternalInconsistencyException
Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/7A24cE79-131F-523F-4C00-23B523ARG123/MyApp.app> (loaded)' with name 'MyItemCell'
La trace de la pile:
0 CoreFoundation 0x39b432a3 __exceptionPreprocess + 163 + 162
1 libobjc.A.dylib 0x33a3297f objc_exception_throw + 31 + 30
2 CoreFoundation 0x39b431c5 -[NSException initWithCoder:] + 1
3 UIKit 0x32e12491 -[UINib instantiateWithOwner:options:] + 1637 + 1636
4 UIKit 0x32e1a1d7 -[NSBundle(UINSBundleAdditions) loadNibNamed:owner:options:] + 139 + 138
5 MyApp 0x00047ded +[ViewHelper loadCustomCellFromNib:owner:] (ViewHelper.m:349)
6 MyApp 0x00034003 -[BuildViewController tableView:cellForRowAtIndexPath:] (BuildViewController.m:2432)
7 UIKit 0x32cc0545 -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 413 + 412
8 UIKit 0x32ca530b -[UITableView(_UITableViewPrivate) _updateVisibleCellsNow:] + 1311 + 1310
9 UIKit 0x32cbc7c7 -[UITableView layoutSubviews] + 207 + 206
10 UIKit 0x32c78803 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 259 + 258
Le problème est que je n'ai pas été en mesure de reproduire ce crash.
Aucune idée sur ce qui pourrait avoir causé l'accident? Ou toutes les solutions pour éviter une telle erreur?
Merci beaucoup pour toute aide
EDIT:
Juste pour clarifier plus, Cela fonctionne parfaitement bien sur tous les tests que je fais. Ce blocage est apparu seulement 1 fois pour 1 utilisateur, donc le problème n'est pas avec le code. Je suis juste à la recherche pour des raisons qui pourrait causer cet accident dans un scénario très spécifique. Grâce
OriginalL'auteur Youssef | 2013-01-25
Vous devez vous connecter pour publier un commentaire.
À créer des cellules de PLUME fichier essayer cette
CellIdentifier est un nom de PLUME de fichier, également utilisé comme identificateur de cellule.
OriginalL'auteur Evgeniy Gushchin
S'il vous plaît essayez ceci...Cela ne donnera pas de problème...
La création de tableViewCell avec plume fichier n'est pas possible..Donc créer un simple point de Vue de la télécommande,puis changement de UIViewController de UITableViewCell...
OriginalL'auteur Murali