第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

UITableView完成查詢數(shù)據(jù)后會收到通知嗎?

UITableView完成查詢數(shù)據(jù)后會收到通知嗎?

iOS
梵蒂岡之花 2019-12-13 10:18:34
有什么方法可以找出何時UITableView從其數(shù)據(jù)源中查詢數(shù)據(jù)?的無viewDidLoad/ viewWillAppear/ viewDidAppear關(guān)聯(lián)的視圖控制器(方法UITableViewController)是使用在這里,因?yàn)樗麄兌蓟鸬锰?。它們中的一個(完全可以理解)不能保證對數(shù)據(jù)源的查詢暫時已經(jīng)完成(例如,直到視圖滾動為止)。一個解決辦法,我發(fā)現(xiàn)是調(diào)用reloadData的viewDidAppear,因?yàn)楫?dāng)reloadData返回時,表視圖是保證完成查詢數(shù)據(jù)源,它更需要的時間存在。但是,這似乎有點(diǎn)令人討厭,因?yàn)槲艺J(rèn)為這會導(dǎo)致在reloadData首次加載數(shù)據(jù)源時兩次(自動一次,由于調(diào)用而一次)要求輸入相同的信息。我要這樣做的原因是我想保留-的滾動位置,UITableView但要一直到像素級別,而不僅僅是到最近的行。當(dāng)恢復(fù)滾動位置(使用scrollRectToVisible:animated:),我需要的表視圖已經(jīng)有足夠的數(shù)據(jù)在里面,否則scrollRectToVisible:animated:方法調(diào)用什么也不做(這是如果你把它自己的呼叫任何會發(fā)生什么viewDidLoad,viewWillAppear或viewDidAppear)。
查看完整描述

3 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個贊

由于自編寫答案以來對UITableView實(shí)現(xiàn)進(jìn)行了一些更改,因此該答案似乎不再有效??吹竭@個評論:UITableView完成請求數(shù)據(jù)時得到通知?


我一直在玩這個問題困擾了幾天,覺得子類UITableView的reloadData是最好的方法:


- (void)reloadData {


    NSLog(@"BEGIN reloadData");


    [super reloadData];


    NSLog(@"END reloadData");


}

reloadData在表重新加載其數(shù)據(jù)之前不會結(jié)束。因此,當(dāng)?shù)诙€NSLog被觸發(fā)時,表視圖實(shí)際上已經(jīng)完成了對數(shù)據(jù)的查詢。


我已經(jīng)細(xì)分UITableView為在之前和之后將方法發(fā)送給委托reloadData。它像一種魅力。


查看完整回答
反對 回復(fù) 2019-12-13
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊

這個答案實(shí)際上不是解決方案。起初它似乎起作用了,因?yàn)橹匦录虞d可能很快發(fā)生,但是實(shí)際上,在數(shù)據(jù)完全完成重新加載之后,不一定會調(diào)用完成塊-因?yàn)閞eloadData不會阻止。您可能應(yīng)該尋找更好的解決方案。


為了擴(kuò)展@Eric MORAND的答案,讓我們輸入一個完成代碼塊。誰不喜歡一個代碼塊?


@interface DUTableView : UITableView


   - (void) reloadDataWithCompletion:( void (^) (void) )completionBlock;


@end

和...


#import "DUTableView.h"


@implementation DUTableView


- (void) reloadDataWithCompletion:( void (^) (void) )completionBlock {

    [super reloadData];

    if(completionBlock) {

        completionBlock();

    }

}


@end

用法:


[self.tableView reloadDataWithCompletion:^{

                                            //do your stuff here

                                        }];


查看完整回答
反對 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 700 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號