Nasıl UİTableVİew ReloadData tamamlandığında söylemek için mi?
[self.tableView reloadData]
gösteri bittikten sonra bir UİTableView altına kaydırmak için çalışıyorum
Ben aslında vardı
[self.tableView reloadData]
NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
Ama sonra kaydırma self.tableView
, [self.tableView numberOfSections]
[self.tableView numberOfRowsinSection
0 olduğu için olmaz o kadar reloadData uyumsuz olduğunu okudum.
Teşekkürler!
Garip olanı kullanıyorum
[self.tableView reloadData];
NSLog(@"Number of Sections %d", [self.tableView numberOfSections]);
NSLog(@"Number of Rows %d", [self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1);
= -1; konsol Bölümleri döner = 1, Satır
cellForRowAtIndexPath
Bölüm = 1 ve Satır olsun aynı NSLogs ben ne zaman = 8; (8)
CEVAP
Yeniden çalıştırmak döngü (diyelim düğmesi eylemi ya da ne olursa olsun döndürür sonra) kontrol döndüğünüzde normal olur bir sonraki düzeni geçişi sırasında olur.
Sonra tabloyu bir şey çalıştırmak için, yeniden yükler sadece tablo görünümü düzeni hemen gerçekleştirmeye zorlamaktır görünüm:
[self.tableView reloadData];
[self.tableView layoutIfNeeded];
NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
Başka bir yol düzeni daha sonra çalıştırmak için kod dispatch_async
kullanarak planlamak için:
[self.tableView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
NSIndexPath* indexPath = [NSIndexPath indexPathForRow: ([self.tableView numberOfRowsInSection:([self.tableView numberOfSections]-1)]-1) inSection: ([self.tableView numberOfSections]-1)];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
});
GÃœNCELLEME
Daha fazla araştırma üzerine, tablo görünümü reloadData
dönmeden önce veri kaynağına tableView:numberOfRowsInSection:
gönderdiği buluyorum. Eğer temsilci tableView:heightForRowAtIndexPath:
, uygular tablo görünümünü de (her satır için) reloadData
dönmeden önce gönderir.
Ancak, tablo görünümünü çalıştırın döngü denetimi döndüğünüzde varsayılan olarak gerçekleşen düzen aşamasına kadar tableView:cellForRowAtIndexPath:
göndermez.
Ve ben de küçük bir test programı, söz konusu kod düzgün tablo görünümü, aşağıya sürüklerolmadanözel bir şey (layoutIfNeeded
gönderme dispatch_async
kullanma gibi) ben yapıyorum.
Nasıl eğer değer boş ise Jackson bir a...
Bazı Satırlar ama Diğerleri için Seçim...
Nasıl bir dize bash kabuk tanımlı olup...
Nasıl UİTableView boş hücreleri kaldır...
Nasıl PHP bir dizi boş olup olmadığını...