2011-11-30 82 views
5

我有一個奇怪的設計案例,在其中實現我需要將兩個UITableViews放在同一視圖中。我只是使用部分,但我需要在第二個表上的索引。滾動兩個UITableViews在一起

我想讓他們一起滾動,就像他們實際上是同一個表視圖的兩個部分。這可能嗎?

下面是說明爲什麼一個基本的樣機:

mockup

據我瞭解,你不能移動索引。另外,向表中添加索引時,它會顯示在整個tableview上,而不僅僅是一個部分。

如果我必須實現這兩個表視圖,他們都需要滾動,如果他們是一個。如果可以使用部分來做到這一點,那就更好了。

+0

請澄清你所說的「第二表索引」的意思。我不相信單個'UITableView'不會滿足您的需求。 – SundayMonday

+1

您能否讓您的問題更具體地針對您正在嘗試做的事情?我相信我們可以找到一個簡單的解決方案,只使用1個'UITableView'! – Legolas

回答

23

更新

看到你更新我的舊的答案是不是很好,但我會留下我以前爲別人誰想要它的答案後。

新答案 - 這取決於您希望表格如何同步。

如果你知道

  1. 哪些細胞是在top 5
  2. 每個單元多高是
  3. 偏移表視圖

然後你就可以計算細胞在可見top 5表的頂部。您可以使用此信息將底部表格滾動到正確的索引處。


老答案

我與其他人不知道你爲什麼會想,或者如果我誤解,但它很簡單。

UITableViewUIScrollView子類,所以你可以自己設置爲UITableViewDelegate,並覆蓋

- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
{ 
    UITableView *slaveTable = nil; 

    if (self.table1 == scrollView) { 
     slaveTable = self.table2; 
    } else if (self.table2 == scrollView) { 
     slaveTable = self.table1; 
    } 

    [slaveTable setContentOffset:scrollView.contentOffset]; 
} 

這給了我的東西,看起來像這樣:

enter image description here

頂部UITableViewself.table1而底部是self.table2如果任一表被滾動,則滾動在另一個表中被鏡像。

+0

肯定會工作,而這實際上是最好的選擇。 – Macmade

+0

它適用於我滾動拖動平行放置TableViews齊聲滾動 – Krishnan

+0

它的作品完美! – xarly

1

從模擬看來,這似乎可以用一個UITableView兩個部分來完成。

而不是維護兩個tableView你可以維護兩個集合(每個部分一個)。然後在cellForRowAtIndexPath中根據indexPath中指定的部分選擇要使用的集合。

+0

索引將顯示在兩個部分上,而不僅僅是第二部分。 – James

+0

我不認爲我完全明白你想要做什麼。請舉例說明。 – SundayMonday

+0

我想在桌面上有一個索引,但只在第二部分。就像現在一樣,如果我添加一個索引,它會出現在哪裏(在整個表格上)。我只想在第二部分編制索引。 – James

0

在迅速驗證碼:

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 
    } 
}