iOS UITableView reloadData aktualisiert nur die Tabelle, das zweite mal, dass ich meinen reload-Funktion
Hier ist mein reload-Funktion
- (void) reloadTable:(id)sender
{
NSLog(@"Reload Table");
NSLog(@"%@",[appDelegate queryList]);
[self.driverTable reloadData];
[self.driverTable setNeedsLayout];
[self.driverTable setNeedsDisplay];
}
Hier ist, wo ich es nennen, nach Empfang der Daten aus dem webservice
if( [elementName isEqualToString:@"Response"]) {
Response = NO;
LookupView *lookupView = [[LookupView alloc] initWithNibName:@"LookupView" bundle:nil];
[lookupView reloadTable:self];
}
Problem habe ich jetzt, nachdem ich eine Suche durch drücken der Schaltfläche "suchen" und die Daten empfangen. Die Tabelle werden nicht aktualisiert mit den neuen Daten. Wenn ich rufen Sie die gleiche Funktion erneut durch drücken der Schaltfläche "suchen" wieder die Tabelle neu geladen. Jetzt weiß ich, die Daten sind da, weil ich drucken Sie das array aus, bevor ich rufen Sie die Tabelle neu laden.
Irgendwelche Ideen, warum?
- warum brauchen Sie setNeedsLayout und setNeedsDisplay? UITableViews sind nicht in der Notwendigkeit der Neueinteilung, die Sie handhaben, dass sich auf reload-Zeit.
- oh, ich war gerade auf der recherche nach Lösungen hier einige Leute mit ähnlichen Problemen erwähnt so war ich einfach nur versuchen
- Löschen Sie diese Dinge Methode erwähnt von @CodaFi .Es gehört nicht da zu sein.
- Sie sagte, dass Ihre Daten nachladen zweite mal, wenn Sie drücken Sie die Schaltfläche "finden".So ist das, reloadTable: Methode immer aufgerufen werden oder nicht, in der ersten Zeit? Wenn es heißt, was ist dann die Ausgabe in der Konsole bekam Sie für gedruckte array??
- Ich glaube, es wird immer genannt, als ich Drucke die Liste aus, wenn diese Methode wird immer aufgerufen. Und auch das erste mal, dass ich klicken Sie auf die Schaltfläche Liste ausgedruckt mit den erwarteten Daten-Liste. Und ich entfernt die Zeilen erwähnt von @CodaFi
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe laufen in das gleiche Problem. Pro Apple-Dokumentation, reloadData "sollte nicht aufgerufen werden, in die Methoden einfügen oder löschen von Zeilen." Ein workaround, das ich verwendet habe ist die Verzögerung der Aufruf reloadData, so dass es nicht sofort nach der Aktualisierung der Tabelle. Versuchen Sie dies:
an der entsprechenden Stelle mit der folgenden Umsetzung delayReloadData
Einer negativen Seite beeinflussen, ich sehe aus diesem Ansatz ist, dass, wenn die Zeile in der Tabelle sichtbar ist, es gibt eine kurze Verzögerung, bevor es zeigt seinen Inhalt.
Fand ich heraus, Sie tun, XML-parsing, indem Sie sehen, dass
elementName
in Ihremif loop
. Warum müssen Sieload a NIB file
im Parser-code. Was ist der nutzen davon? Sie können einfach rufen Sie IhrenreloadTable:
Methode wie diese.Sind Sie füllen Ihre tableView mit einigen array in Ihrem
app delegate
- Datei. So haben Sie initialisiert Ihre Delegierten in Ihren ViewController?