3 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
lastRow可以同時為[tableView numberOfRowsInSection: 0] - 1或((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row。因此,代碼將是:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
? ? if([indexPath row] == ((NSIndexPath*)[[tableView indexPathsForVisibleRows] lastObject]).row){
? ? ? ? //end of loading
? ? ? ? //for example [activityIndicator stopAnimating];
? ? }
}
如果您想讓此代碼檢測到從源中加載所有數(shù)據(jù)的結束,則不會,但這不是原始問題。該代碼用于檢測何時顯示所有本應可見的單元格。willDisplayCell:用于更流暢的用戶界面(單個單元格通常在willDisplay:調用后顯示很快)。您也可以嘗試使用tableView:didEndDisplayingCell:。

TA貢獻1827條經(jīng)驗 獲得超9個贊
我總是使用這個非常簡單的解決方案:
-(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if([indexPath row] == lastRow){
//end of loading
//for example [activityIndicator stopAnimating];
}
}

TA貢獻1155條經(jīng)驗 獲得超0個贊
Swift 3和4版本:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if let lastVisibleIndexPath = tableView.indexPathsForVisibleRows?.last {
if indexPath == lastVisibleIndexPath {
// do here...
}
}
}
- 3 回答
- 0 關注
- 717 瀏覽
添加回答
舉報