UITableView laden Sie eine Benutzerdefinierte Zelle aus der NIB-Datei wirft NSInternalInconsistencyException
In einer ios-Anwendung ich habe eine UITableView. In der cellForRowAtIndexPath
Methode, die ich brauchen, um wieder eine custom-Zelle unter Verwendung Ihrer NIB Namen. Für die, die ich benutze loadNibNamed
. (Ich fülle die Daten in die Zelle nach dem laden in die "willDisplayCellforRowAtIndexPath')
MyItemCell ist eine XIB-Datei (MyItemCell.xib), die mit 2 UIImageView und einen UIButton (Jedes item hat ein tag)
Dies ist mein code:
In meiner viewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [ViewHelper loadCustomCellWithNibName:@"MyItemCell" owner:self];
}
Und die Methode zum laden der Benutzerdefinierten Zelle aus der Feder
+ (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;
}
Funktioniert alles einwandfrei in allen Prüfungen. Jedoch erhielt ich einen Absturz von einigen Nutzern, dass ich nicht in der Lage war zu reproduzieren.
Dies ist der Absturz:
NSInternalInconsistencyException
Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/7A24cE79-131F-523F-4C00-23B523ARG123/MyApp.app> (loaded)' with name 'MyItemCell'
Den stack-trace:
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
Das problem ist, dass ich nicht in der Lage war zu reproduzieren, dieser Absturz.
Jede Idee, was als Ursache für den Absturz? Oder irgendwelche Lösungen zur Vermeidung solcher Fehler?
Vielen Dank für jede Hilfe
EDIT:
Genau zu klären, mehr, Dieses funktioniert einwandfrei auf jede Prüfung, die ich mache. Dieser Absturz kam erst 1 mal für 1 user das problem ist also nicht mit dem code. Ich bin gerade auf der Suche nach Gründen, die verursachen könnten, dieser Absturz in ein sehr spezifischen Szenario. Dank
InformationsquelleAutor Youssef | 2013-01-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen von benutzerdefinierten Zelle aus der NIB-Datei versuchen, diese
CellIdentifier ist ein name, der NIB-Datei, die auch als cell-id.
InformationsquelleAutor Evgeniy Gushchin
Bitte versuchen Sie dieses...wird Es nicht geben, jedes problem...
Erstellen tableViewCell mit nib-Datei ist nicht möglich..So erstellen Sie eine einfache Ansicht, Steuerung,und ändern Sie dann UIViewController zu UITableViewCell...
InformationsquelleAutor Murali