Hilfe beim NSNotifcation und asynchrones Download
-
13-10-2019 - |
Frage
Ich sende eine Benachrichtigung aus einer Ansicht an eine andere Ansicht. Mein Problem ist, dass die Benachrichtigung in der Ansicht, die ich in meiner CellForrowatIndexPath -Methode rufe, nur gesendet wird, wenn die Tabellenansicht scrollen. Wie kann ich das stoppen und die Benachrichtigung senden, sobald die Bilder heruntergeladen wurden? Hier ist mein Code: https://gist.github.com/756302
Vielen Dank
Mkdev
Lösung
Soweit ich Ihren Code verstehe, wird die Nachricht das Nachladen der gesamten Tabelle ausgelöst. Das sollte zu einer Auffrischung der Zellen führen.
Daher müssen Sie in Zeile 76 einchecken, wenn die Zelle gezeichnet wird .
Das erste, was mir in den Sinn kommt, um dies zu überprüfen, ist, eine Eigenschaft in ReloLoLoLeView festzulegen:
- (void)reloadTableView
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"aaa"];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"name" object:nil];
NSLog(@"removeobserver");
loadImageFinished = YES;
// if your table has several sections you'll need to adopt the section number
NSIndexSet *indices = [[NSIndexSet alloc] initWithIndex:0];
[self.tableView reloadSections:indices withRowAnimation:UITableViewRowAnimationFade];
[indices release];
}
Und dann um hinzuzufügen
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
if (loadImageFinished) {
...
} else {
[asyncImage loadImageFromURL:[NSURL URLWithString:pathImage]];
}
...
}
Beachten Sie, dass es andere Gründe geben könnte, warum die Tabelle neu geladen wird - die Ansicht hätte verschwunden oder entladen werden können und Sie möglicherweise nicht mehrmals Ihr asynnchrones Laden auslösen möchten.
Andere Tipps
Ihr Code sollte richtig funktionieren, wenn die connectionDidFinishLoading
, du rufst das an NSNotificationCenter
Um die Benachrichtigung zu senden, gibt es keine Post -Methode in cellForRowAtIndexPath