2013-05-28 55 views
4

我要創建一個表視圖(iPad版),即能顯示,不同層次的崩潰行:如果用戶點擊一個客戶排如何使用多級可展開的可摺疊行創建UITableView?

- Client 1 
- Category 1 
    - Info 1 
    - Info 2 
- Category 2 
    - Info 1 
    - Info 2 
- Category 3 
    - Info 1 
    - Info 2 
- Client 2 
- Category 1 
    - Info 1 
    - Info 2 

等等...

,整個客戶相關的行(該客戶下的類別和信息)應該展開/摺疊。另一方面,如果他們點擊一個特定的類別,只有該類別應該展開/摺疊。

所以我打算嵌套NSMutableDictionaries來保存我可以通過動態密鑰(如動態客戶端名稱)訪問的數據,但我不確定這種方法實際上將解決實際問題(使可摺疊部分) 。此外,我不確定是否只使用行,並使它們看起來像標題部分或使用實際部分,因爲據我所知,我不能讓子部分實現三層嵌套。

任何想法?我見過可擴展行的項目的例子,但我仍然感到困惑。

幫助!

回答

0

我認爲嵌套字典將不方便– tableView:cellForRowAtIndexPath:

這裏是一個懶惰的解決方案:

使用NSMutableArrayUITableView與僞裝,看起來像部分行。數組中的對象每個都有一個名爲NSMutableArray類型的子項的屬性。展開父項時,請清空子數組並在父項之後插入它們。在摺疊時,請將物品移動到兒童中,直到它碰到與父級相同級別的物品。

然後對於動畫:– insertRowsAtIndexPaths:withRowAnimation:– deleteRowsAtIndexPaths:withRowAnimation:UITableViewRowAnimationTopUITableViewRowAnimationFade看起來不錯。

+0

嗯,這實際上是一個有趣的想法,但它可能需要一段時間才能確定它是否工作。所以讓我研究這個概念。如果您想出更多的建議方法的細節或想法(可能是示例代碼),請成爲我的客人。謝謝! – Renexandro

3

GitHub上的TLIndexPathTools庫非常適合這類事情。爲了演示,我放了一個simple collapsible tree viewer component。它支持使用每個級別的單元格的任何樹深度。嘗試運行"Outline" sample project

樹組件是一個工作正在進行中,但希望它應該是一個好的開始。

+0

我剛剛從git下載了源代碼,並按照你的建議運行了Outline項目,它看起來不錯,所有的東西,我都要潛入代碼中,看看我能否使用一些類。謝謝! – Renexandro

+0

看起來像一個非常實用的框架 – wuf810

相關問題