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

Die wichtige Sache zu erinnern ist, dass nibname und cell-id sind Verschieden. Name ist in der identity-Inspektor, wird die id in dem Attribut-Inspektor

InformationsquelleAutor Youssef | 2013-01-25

Schreibe einen Kommentar