2017-05-11 4 views
-1

Ich habe dieses Problem, dass meine Meinung amost 2 Monate und ich weiß immer noch nicht warum? Ich versuche ReloadRowAtIndexPath, es funktioniert gut, aber manchmal stürzt es ab, Grund ist "versuchen, Zeile (x + 1) aus Abschnitt (x) zu löschen, die nur enthält (x + 1) Zeilen vor dem Update"Kann nicht reloadRowAtIndexPath UItableView

Ich brauche wirklich etwas Hilfe, denn es passiert nicht immer, aber nur manchmal, ich weiß nicht warum, auf dem iPhone meines Testers :( Ich habe viel versucht, und hier ist mein Code

NSDictionary *userInfo = notification.userInfo; 
NSNumber *indexNumber = [userInfo valueForKey:@"index"]; 
int index = [indexNumber intValue]; 
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; 
NSArray *indexPaths = [[NSArray alloc] initWithObjects:indexPath, nil]; 
[[Settings sharedInstance].saveOdersIndex addObject:indexPath]; 
@try { 
    [listView beginUpdates]; 
    [listView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; 
    [listView endUpdates]; 
} @catch (NSException *exception) { 
    NSLog(@"exception %@", exception.reason); 
    FIRCrashLog(@"Cause Crash button clicked %@", exception.reason); 
} @finally { 
    NSLog(@"finally"); 

} 
+0

Es gibt nicht genug Informationen hier zu helfen. 1: Sind Sie sicher, dass dies der Code ist, der die Ausnahme auslöst? 2. Geben Sie den Code ein, der das Modell aktualisiert, und senden Sie die Benachrichtigung mit dem Schlüssel 'index'. – Dima

+0

Wo ist das Array Ihrer Datenquelle? – KKRocks

+0

Dieser Code sieht nicht so aus, als bezog er sich auf die Fehlermeldung. Die Fehlermeldung zeigt an, dass Sie Zeilen löschen, aber dieser Code lädt nur Zeilen neu. Bitte fügen Sie ein symbolisiertes Crash-Protokoll hinzu, den echten Code, der den Fehler verursacht, und zeigen Sie an, welche Zeile den Absturz verursacht. –

Antwort

0

Dieser Fehler verursacht durch, wenn -insertRowsAtIndexPaths:withRowAnimation: genannt wurde -tableView:numberOfRowsInSection:ergab 0 Sie müssen sich in der Datenquelle Array einfügen, bevor Sie anrufen -. insertRowsAtIndexPaths:withRowAnimation:

ODER

Versuchen Sie diese Zeile [listView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; mit [listView reloadData] zu ersetzen;

+0

Ich habe nicht insertRow aufgerufen? –

+0

ja, aber überall müssen Sie löschen und einfügen Operation für die Tabellenansicht – KKRocks

+0

Ja, ich füge Zeile viel, aber was soll ich jetzt tun? –

Verwandte Themen