2012-10-08 60 views
0

我目前在編碼方面面臨一個大問題,但我找不到任何解決方案。Double-sectioned expandable tableview

Just as you can see here,我想創建一個可擴展的實現代碼如下:

  • 類分爲2個部分
  • 小類

我的意思是,如果你點擊 「2A」,將「 2A-1「,」2A-2「等列表展開。如果您點擊「2B」,則「2B-1」,「2B-2」列表爲,依此類推。

你覺得我可以如何管理它?

回答

1

我已經在少數產品中編寫了這種性質的解決方案。完成這個的代碼有點廣泛,所以我會給你一個高層次的概述。

創建每個「行」作爲一個部分。顯然,覆蓋viewForHeaderInSection等等,以便使每個節標題看起來像一排。

讓你的視圖控制器保存數組,其中部分被擴大(非展開處於摺疊狀態)

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section檢查,看是否該部分可進行擴展,如果是,則返回子項目的數量,否則,返回0.

因此,cellForRowAtIndexPath總是返回子項目,而viewForHeaderInSection總是返回父項。

當用戶點擊該標題單元格,切換部分擴展標誌和reloadSections:withRowAnimation:得到一個不錯的動畫過渡

一個音符,由於之前iOS6的,節頭總是重建,並不會被緩存,性能並不好。使用IOS6,這個問題也可以通過回收標題單元來解決。

+0

你可以做同樣的事情,沒有頭,只是在numberOfRowsInSection,這是你的第一行返回1。那麼你不必「讓每個部分的頭部看起來像一排」,並且不需要擔心iOS6之前的緩存問題。 +1雖然。 – lnafziger

+0

非常感謝!但恐怕我不明白,也許是因爲我開始了:創建行後,如何根據點擊區域(取決於左側還是右側)擴展不同的小節? –