在我的應用程序,我有兩個並列的tableViews側。當用戶滾動時,我希望第二個人同時滾動,因此它看起來幾乎就像一張有兩個不同列的表格。我在如何去做這件事上有點失落,有什麼建議?iPhone - 如何滾動2個UITableViews對稱
感謝, 格雷格
在我的應用程序,我有兩個並列的tableViews側。當用戶滾動時,我希望第二個人同時滾動,因此它看起來幾乎就像一張有兩個不同列的表格。我在如何去做這件事上有點失落,有什麼建議?iPhone - 如何滾動2個UITableViews對稱
感謝, 格雷格
你要考慮的UIScrollViewDelegate
- 說你有兩個滾動視圖,一個和乙。
使用滾動視圖一個的scrollViewDidScroll
委託方法來獲得補償,然後在同一個方法調用setContentOffset
上滾動視圖乙,傳遞您從委託獲得的價值。
它實際上不應該超過2-3行的代碼,一旦你建立你的委託方法。
便利,UITableView的是的UIScrollView的子類。存在UIScrollViewDelegate,它有以下方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
如果實施該方法,你可以得到scrollView
參數的contentOffset
財產。然後,您應該使用
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
並設置新的內容偏移量。因此,像這樣:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UIScrollView *otherScrollView = (scrollView == self.tableView1) ? self.tableView2 : self.tableView1;
[otherScrollView setContentOffset:[scrollView contentOffset] animated:NO];
}
您可以轉換爲一個UITableView,如果你想,但沒有特別的理由這樣做。在scrollViewDidScroll消息,因爲這將讓應用程序陷入無盡的循環:
我會說它在語義上更好地轉換爲UITableView,並且對於可讀性很好。在這種情況下編程方式,這並不重要 –
同樣,得到了用戶的滾動tableview中不應發送setContentOffset。所以附加UIScrollViewDelegate方法應該以被實現爲解決該問題:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
beingScrolled_ = nil;
}
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
if(beingScrolled_ == nil)
beingScrolled_ = scrollView;
}
和修改Inspire48的版本scrollViewDidScroll:因此:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
UIScrollView *otherScrollView = (scrollView == self.tableView1) ? self.tableView2 : self.tableView1;
if(otherScrollView != beingScrolled)
{
[otherScrollView setContentOffset:[scrollView contentOffset] animated:NO];
}
}
其中beingScrolled_是類型的實例變量的UIScrollView
對稱滾動兩個uitableviews:
func scrollViewDidScroll(scrollView: UIScrollView) {
if tb_time1 == scrollView {
tb_time2.contentOffset = tb_time1.contentOffset
}else if tb_time2 == scrollView {
tb_time1.contentOffset = tb_time2.contentOffset
}
}
想知道你是否可以幫助我。我有一個tableview裏面的collectionview,並想同步滾動。我將如何做到這一點?我是否必須以某種方式將tableviews委託發送到collectionviews單元,以便它們都依賴相同的'scrollViewDidScroll(_ scrollView:UIScrollView)'? – luke
Co OL,我去給一個鏡頭,現在:) – Greg
呀,精美的作品:)謝謝!我會投了,但我沒有15代表處點XD – Greg
的反彈是否正常運作嗎? – Janky