0

Ich sende eine Benachrichtigung von einer Ansicht an eine andere Ansicht. Mein Problem ist, dass die Benachrichtigung in der Ansicht, die ich in meiner cellForRowAtIndexPath-Methode aufruft, nur gesendet wird, wenn die Tabellenansicht scrollt. Wie kann ich dies stoppen und veranlassen, dass die Benachrichtigung gesendet wird, nachdem die Bilder heruntergeladen wurden? Hier ist mein Code: https://gist.github.com/756302Hilfe mit NSNotifcation und asynchronem Download

Dank

mkdev

+0

xcode ist nur eine IDE, und hat nichts mit dieser Frage zu tun – vikingosegundo

Antwort

0

Soweit ich Ihren Code verstehe, löst die Nachricht das Nachladen der gesamten Tabelle aus. Das sollte zu einer Auffrischung der Zellen führen.

Sie müssen also in Zeile 76 nachsehen, ob die Zelle gezeichnet wird, weil ein Reload von der Zielmeldung ausgelöst wurde (und das Bild jetzt angezeigt werden kann) oder wenn Sie das asynchrone starten müssen Download des Bildes.

Das erste, was mir in den Sinn kommt, dies zu überprüfen, ist eine Eigenschaft in reloadTableView einzustellen:

- (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 in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    ... 
    if (loadImageFinished) { 
     ... 
    } else { 
     [asyncImage loadImageFromURL:[NSURL URLWithString:pathImage]]; 
    } 
    ... 
} 

Hinweis hinzufügen, dass es auch andere Gründe geben könnte, warum Die Tabelle wird neu geladen - die Ansicht könnte verschwunden oder nicht geladen sein und Sie möchten möglicherweise Ihre asynchrone Ladeoperation nicht mehrmals auslösen.

+0

Mein Problem ist, dass die TableView nicht neu geladen wird, wenn die Bilder heruntergeladen wurden. Das TableView wird nur beim Scrollen neu geladen. Hast du eine Idee, wie das zu beheben ist? – MKDev

+0

aber Sie sind sicher, dass die "reloadTableView" dazwischen aufgerufen wird? Ich habe meinen Code erneut geändert - ersetzte reloadData. Dieser Übergang verwende ich in meinem Code, um zu einem anderen Zellstil für die Bearbeitung zu wechseln. – Axel

+0

reloadTableView wird nur aufgerufen, wenn die Tabellenansicht gescrollt wird. – MKDev

0

Code sollte richtig funktionieren, wenn die connectionDidFinishLoading, können Sie die NSNotificationCenter rufen Sie die Benachrichtigung zu senden, gibt es keine post-Methode in cellForRowAtIndexPath

+0

ah. Im Grunde muss die tableView neu geladen werden, wenn connectDidFinishLoading, also ich habe versucht, eine Benachrichtigung von der asyncView an den rootviewcontroller zu senden, um die tableView neu zu laden. Könntest du mir bitte sagen, wie ich das machen kann, ohne warten zu müssen, bis der Tableview gescrollt hat? – MKDev

Verwandte Themen