因為項目需要實現(xiàn)了一個分類查找的界面,多個類別/指標之間有多級依賴關系月幌,效果如下:
整個demo使用MVC架構碍讯。
分三級,也就是分三類飞醉,用表頭的view來展示冲茸,自定義實現(xiàn)一個表頭的headerView類屯阀。
表頭右邊指標的箭頭動畫使用UIView動畫實現(xiàn)缅帘,點擊后會判斷該類下是否有內(nèi)容并且避免跳級展開顯示轴术,通過delegate回調(diào)刷新列表,但是為了完整顯示箭頭動畫钦无,這個回調(diào)操作使用GCD來延遲執(zhí)行逗栽。收起時會收起所有小于等于該級別的分類列表
各個分類/指標使用一個自定義的Model來裝載數(shù)據(jù)。每個Model有以下數(shù)據(jù):
- id
- 標題
- 是否是葉子節(jié)點(比如古文學就是個葉子節(jié)點失暂,下面不會再有分類了彼宠,因此點擊后沒有效果了
- 下屬節(jié)點數(shù)組(比如文學下屬數(shù)組包含中國文學和外國文學,中國文學下屬數(shù)組包含古文學和小說文學弟塞,在點擊一個節(jié)點后通過該數(shù)組獲取其下屬內(nèi)容并顯示)
采用這種結構是為了方便構建多級依賴關系的樹狀結構凭峡,同時用一個是否有葉子節(jié)點的屬性,可以用于不一定都是滿樹的情況决记。
列表及一些邏輯放在Controller內(nèi)摧冀,列表、delegate等系宫,都比較常見索昂。
具體可以直接看代碼,注釋很詳細:https://github.com/Cloudox/OXClassifyTagDemo