UİTableView veri istiyor bittiğinde haberdar?
Bir şekilde UITableView
Bir veri kaynağından veri istiyor bittiğinde öğrenmek için var mı?
viewDidLoad
/viewWillAppear
/viewDidAppear
yöntem ilişkilendirilmiş görünümü denetleyicisi hiçbiri (**5) çok erken yangın bütün olarak kullanmak geldi. Hiçbiri (tamamen anlaşılır) veri kaynağına sorgu süresi (görünümü kaydırılan kadar örneğin) için bitmiş garanti.
Bulduğum tek çözüm viewDidAppear
, reloadData
döndüğünde bu yana, tablo görünümünde reloadData
aramakgarantili, ihtiyacı kadar veri kaynağını sorgulamak şimdilik bitmiş.
Ancak, bu oldukça kötü görünüyor, sanırım buna neden olan veri kaynağı olmak istedi için aynı bilgileri iki kez (otomatik olarak bir kez ve bir kez nedeniyle reloadData
call) ilk yüklendi.
Bu işi yapmak istiyorum sebebi yakın satır UITableView
- ama piksel seviyesine doğru, kaydırma konumunu korumak istiyorum.
Ne zaman geri kaydırma konumu (kullanarak scrollRectToVisible:animated:
), ihtiyacım tablosunu görüntülemek için yeterli veri zaten var, ya da başka scrollRectToVisible:animated:
yöntem çağrısı yaptığı hiçbir şey (ki ne olursa yer çağrıda kendi içinde herhangi bir viewDidLoad
, viewWillAppear
viewDidAppear
).
Yardımınız için şimdiden teşekkürler!
CEVAP
Bu cevap cevap yazıldığından bu yana artık bazı değişiklikler UİTableView uygulama yapılan nedeniyle çalışma gibi görünmüyor. Bu yorum bakın : Get notified when UITableView has finished asking for data?
Bir kaç gündür bu sorun ile oynuyorum ve sınıflara UITableView
'reloadData
s en iyisidir :
- (void)reloadData {
NSLog(@"BEGIN reloadData");
[super reloadData];
NSLog(@"END reloadData");
}
reloadData
tablo bitirmek verileri yeniden önce bitmiyor. İkinci NSLog
ateş olduğunda, tablo görünümü aslında veri için sorumu bitireyim.
UITableView
reloadData
önce ve sonra temsilciye yöntemler göndermek için alt ettim. Bir cazibe gibi çalışır.
Veri kaynağı tableView bir hücre dönme...
Nasıl veri NSString için NSİnteger dön...
nasıl jquery / json veri javascript ay...
Java kodlamak için XML text veri için ...
Nasıl jQuery bir dizi geçirilecek .() ...