2016-03-17 68 views
3

我一直在尋找很多,但我沒有找到明確的方法來創建一個滾動到頂部加載更多,或無限滾動,就像你在聊天中看到的一樣,例如whatsapp。 使用scrollViewDidScroll方法我是想,負載數據再次基於當前頁面滾動到頂部加載更多

if self.tableView.contentOffset.y == 0 { 
     loadData(++currentPage, itemsPerPage: pageSize) 
    } 

但處理新數據和滾動位置對我來說這有點不可思議,所以主要的問題是在增加內容的方式上有效的方式,在我的UITableView頂部

//更新

在ScrollViewDidScroll方法:contentOffset.y達到0 POSITI

後因爲它必須出現在UITableView的頂部,所以在索引0處插入消息是我發現要做到這一點的唯一方法。但有一件事,在拉動新數據並重新加載UITableView之後,滾動位置仍然顯示在可見屏幕上,最後拉動消息在頂部。這不是預期的行爲,看看這個鬆弛通道PIC

enter image description here

當滾動達到適當的偏移,新的數據被拉扯,並篩選它是在相同的消息,但現在看起來滾動位置

所以,我認爲在這種情況下重新加載整個表視圖是個問題,但是如何正確地獲取tableView中的數據以獲得預期的滾動行爲?

e.g在WhatsApp的是相同的

+0

我從來沒有在這個問題上工作過。聽起來很有趣。什麼不適合你?您無法檢測到用戶何時滾動到頂部或無法將更多內容添加到視圖頂部? – garricn

+0

所以主要問題是以有效的方式添加內容,在我的UITableView的頂部 – Steve

+0

你有沒有想過?我正在處理類似的問題。 – goldengil

回答

-2

我建議作出的UITableView委託的方法

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 

     //your code() 
      if indexPath.row == datasource.count - 3 { 
      loadMore() 
     } 
    } 

這可以讓你避免滾動視圖的怪異的行爲預取。

+0

但是,這將工作爲滾動底部加載更多,達到關閉最後一個單元格,我試圖做到這一點在滾動頂部,就像whatsapp聊天 – Steve

+0

對不起,錯過了這一點。是的,那麼你真的不得不依靠tableView的偏移量。您可以訂閱膠印的更改與KVO – alex

+1

訂閱膠印的變化是沒有問題的,因爲我使用UITableView,棘手的部分它是如何處理數據,並添加在頂部 – Steve