2012-05-23 34 views
1

我在單個uiscrollview中有3個可用視圖。每個uitableview都是全長的,不可滾動,因此外部的uiscrollview將它們滾動到一起。這可以正常工作,但uitableviews認爲所有單元格都是可見的,這樣所有單元格都可以在前面創建。即使這是可以接受的,除非每個調用都有一個從url中異步加載的圖像視圖(縮略圖)。我想弄清楚如何限制圖像加載只有可見的單元格,但仍然允許用戶滾動外部uiscrollview(從而模仿uitableview行爲)。在單個UIScrollview中有多個UITableViews,如何只爲可見單元格加載單元格數據

使用單元格顯示3個單元格的單個表格的替代設計不起作用(基於其他設計要求),所以我堅持使用某種方法來限制圖像下載。最大的細胞數量將達到125個左右。 uiscrollview委託似乎沒有足夠的調用來允許即時更新單元格,但我可能是錯的。有任何想法嗎?

回答

0

出現我可以簡單地使用UIScrollViewDelegate scrollViewDidScroll調用,然後使用scrollview的contentOffset.y爲每個tableview使用tableView indexPathsForRowsInRect觸發任何可見(或即將)可見的單元格的縮略圖。我的單元格子類有一個觸發縮略圖下載的方法。

當您滾動時,scrollViewDidScroll委託方法似乎會針對每個像素調用,這是完美的。我認爲它可能太慢,但到目前爲止這不是什麼大問題。唯一的問題,以確保我總是檢查可見細胞,如果我排序他們或什麼。

0

也許只是做一個自定義檢查:如果tableView不可見(因爲不在你的scrollView的邊界),那麼不要在「cellForRowAtIndexPath」中加載tableView的圖像(或單元格)。

如果tableView可見,則調用reloadData並顯示圖像。

您可以使用scrollViewDelegate方法檢查所有這些。

0

TableViewDatasource協議實現: - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath *)indexPath

一個完整的表,是不是在邊界可以限制更新簡單地通過比較的tableview指針參數指向您正在顯示的表格視圖並跳過不可見的表格視圖。

對於單元格:考慮到您在同一個scrollview上實現3,這是一個更困難的選擇。如果你實現了3個獨立的tableview,每個tableview都是標準實現的,那麼這會更容易一些。這個陳述的原因是,如果蘋果公司的協議實施上述例行程序,實際上只會要求當前需要在屏幕上顯示的單元格。通過這種方式,你可以在上面定義的例程中實現你的圖像背景加載器,並且你確實會得到你想要的。我已經做到了這一點,它確實有效。

另一個回答: 也許你應該看看自定義的tableview,你可以爲單個tableview定義你自己的自定義外觀,它將你希望的所有信息合併到這個單獨的table中,從而允許你實現另一半以上。

爲了給出更好的答案,我想我將不得不更深入地探究你試圖最終完成的事情。

+0

我在發帖之後發現了它,但我無法回答,直到獲得更多積分。見下文。 – ahwulf

+0

我可以發佈前一個小時哎呀。 – ahwulf

相關問題