2013-05-20 12 views
15

sto facendo lazy loading per il mio UITableView modo da sto provando a ricaricare singole righe come le immagini vengono aggiornati. Tuttavia sto incontrando uno strano problema.UITableView reloadSection e reloadRowsAtIndexPaths provoca strana animazione

Quando chiamo,

[self.bubbleTableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone]; 

O

[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 

Quando ho specificamente dico No animazione si anima ancora e l'animazione è l'immagine occupando l'intera cella e si riduce rapidamente nel formato normale . Inoltre, se lo cambio a qualsiasi altra animazione, fa la stessa animazione, indipendentemente dalle impostazioni.

Se commento uno di questi e uso solo reloadData, funziona bene, ma preferirei non eseguire reloadData per motivi di prestazioni di reupdating delle celle che non necessitano di aggiornamenti.

Grazie!

+0

stesso problema qui. l'hai risolto? –

risposta

36

Here was an answer

[UIView setAnimationsEnabled:NO]; 
[self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
[UIView setAnimationsEnabled:YES]; 

funziona per me.

UPD. Stessa cosa con blocco per @ Şafak-gezer

[UIView performWithoutAnimation:^{ 
    [self.bubbleTableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
}]; 

SWIFT

UIView.performWithoutAnimation { 
      self.bubbleTableView.reloadSections(NSIndexSet(index: indexPath.section), withRowAnimation: UITableViewRowAnimation.None) 
     } 
0

Utilizzare cellForRowAtIndexPath: solo aggiornare la cella che si sono interessati a.

+0

io non sto avendo problemi con l'aggiornamento quelli che mi interessano, ma sto avendo difficoltà con l'aggiornamento delle specifiche cellule senza questa animazione strano. – Alan

+0

Ma se si ottiene la cella (con cellForRowAtIndexPath), è possibile aggiornare l'immagine nella cella. Non ci sarà animazione, perché non chiami alcun metodo di ricarica *. – Markus

+0

hmm .. Sto aggiornando l'immagine nella cella, ma il problema che sto avendo è che l'immagine non si aggiorna fino a quando non ricarico i dati o se la cella esce dallo schermo e ritorna. – Alan

-1

ho trovato questo accada a me sul simulatore iOS. Dopo alcuni ricaricamenti ha funzionato normalmente senza animazione. Potrebbe essere solo un bug nel simulatore.

+1

sta accadendo anche sul dispositivo –

7

Sotto metodo ha funzionato per me: (per iOS 7 e migliore)

[UIView performWithoutAnimation:^{ 
    [tableView reloadSections:[NSIndexSet indexSetWithIndex:[indexPath section]] withRowAnimation:UITableViewRowAnimationNone]; 
}]; 
Problemi correlati