我正在使用AFNetworking從API執行一些數據加載以刷新UITableView。我希望刷新控制器能夠如此反映。使用RefreshControl異步刷新
用戶拉下,並刷新輪出現
API調用熄滅(異步調用)
API調用返回成功或錯誤
的UITableViewController完成刷新,重新加載數據,刷新輪消失
所以我加入我的自定義的UIViewController viewDidLoad中刷新控制(我的表視圖是該主視圖的子視圖)象下面這樣:
//Set up refresh controller
tableController = [[UITableViewController alloc]init];
tableController.view = self.subscriptionsTable;
UIRefreshControl* refresh = [[UIRefreshControl alloc]init];
[refresh addTarget:self action:@selector(loadSubscriptions) forControlEvents:UIControlEventAllEvents];
tableController.refreshControl = refresh;
然後我有我的刷新方法:(所有[connections asyncCall:self]
確實是發一個異步呼叫到經由AFNetworking莢的API,在調用我的視圖控制器的完成方法完成時)
-(void)loadSubscriptions{
updated = YES;
[connections asyncCall:self];
}
視圖控制器完成的方法是這樣的
-(void)asyncDone(id)responseObject{
tableData = responseObject;
NSLog(@"Yay, I'm done!");
}
不幸的是,刷新控制完成,當然,異步調用發送的分鐘,而不是完成時,沒有更新的數據。在異步調用實際完成之前,我怎樣才能讓這件事情掛出來?
這將正常工作時,我想手動觸發刷新,但是,當他們拉下來?這會自動啓動開始刷新,調用我的loadSubscriptions方法,然後在完成時調用endRefreshing,是否正確? – steventnorris 2014-08-28 20:34:03
我不得不測試它是肯定的,但我不認爲手動拉自己觸發'beginRefreshing';我認爲你仍然需要手動調用它。 – 2014-08-28 20:36:15
文檔狀態:_控件不直接啓動刷新操作。相反,當發生刷新操作時,它會發送UIControlEventValueChanged事件。您必須爲此事件分配一個操作方法,並使用它來執行所需的任何操作._我知道這是直接討論您需要執行的操作來刷新表視圖的數據,但我認爲這也意味着您仍然需要調用'begin/endRefreshing'。 – 2014-08-28 20:42:56