此文章旨在幫助有項(xiàng)目中有類似攜程酒店模塊中多級(jí)篩選功能的程序員一個(gè)設(shè)計(jì)思路,如若真的需要泣懊,請(qǐng)聯(lián)系本人伸辟,可以溝通交流,由于種種原因馍刮,此處不方便公開代碼自娩,還請(qǐng)諒解。
第一渠退、看到功能的第一眼我們想到的肯定是三個(gè)UitableView的展示忙迁,然后根據(jù)數(shù)據(jù)動(dòng)態(tài)的來控制展示或者隱藏,思路是對(duì)的碎乃,但是切記一點(diǎn)就是如果是需要隱藏的情況下一定要隱藏中間列姊扔,因?yàn)榭刂七壿嫾捌洳煌珻ell的控制都在第三列,因?yàn)榈谌袝?huì)有多種展示情況梅誓,比如只能選擇一行恰梢,可以全選佛南,可以多選等。所以要隱藏第二行嵌言。
第二嗅回、由于數(shù)據(jù)的記錄選擇情況,我們需要從網(wǎng)絡(luò)拿到數(shù)據(jù)之后自行建立Model,然后在model中擴(kuò)展需要的字段來控制是否選中狀態(tài)摧茴,當(dāng)然了能否多選及其是否是單選等都是后臺(tái)數(shù)據(jù)來控制的绵载。對(duì)于數(shù)據(jù)我們需要用一個(gè)單例來處理,這樣就能夠?qū)崿F(xiàn)類似攜程那種記憶并且切換跳轉(zhuǎn)界面的時(shí)候仍然展示著選擇記憶苛白。
第三娃豹、數(shù)據(jù)的修改就是遍歷來修改單例的狀態(tài),Cell的展示則是根據(jù)數(shù)據(jù)的狀態(tài)來展示购裙,切記要使用單例懂版。
下面為模擬數(shù)據(jù):
{
"code": "1111111",
"data": [{
"name": "酒店類型",
"type": "mulit",
"list": [{
"name": "高端連鎖",
"id": "100895"
},
{
"name": "快捷連鎖",
"id": "100895"
},
{
"name": "酒店公寓",
"id": "100895"
},
{
"name": "客棧",
"id": "100895"
}
]
},
{
"name": "支付方式",
"type": "radio",
"list": [{
"name": "在線支付",
"id": "100895"
},
{
"name": "到店支付",
"id": "100895"
},
{
"name": "閃住",
"id": "100895"
}
]
},
{
"name": "品牌",
"type": "radio",
"list": [{
"name": "高端連鎖",
"type": "mulit",
"list": [{
"name": "全部高端連鎖酒店",
"id": "200356",
"all": "all"
}, {
"name": "錦江",
"id": "200356"
}, {
"name": "桔子水晶",
"id": "200357"
}, {
"name": "香格里拉",
"id": "200358"
}]
}, {
"name": "中端連鎖",
"type": "mulit",
"list": [{
"name": "全部中端連鎖酒店",
"id": "200356",
"all": "all"
}, {
"name": "全季",
"id": "200356"
}, {
"name": "維也納",
"id": "200356"
}, {
"name": "如家精選",
"id": "200356"
}]
}, {
"name": "快捷連鎖",
"type": "mulit",
"list": [{
"name": "全部酒店",
"id": "200356",
"all": "all"
}, {
"name": "如家",
"id": "200780"
}, {
"name": "7天",
"id": "200781"
}, {
"name": "速8",
"id": "200782"
}, {
"name": "布丁",
"id": "200783"
}]
}]
}, {
"name": "床型早餐",
"type": "radio",
"list": [{
"name": "床型",
"type": "radio",
"list": [{
"name": "大床",
"id": "300780"
}, {
"name": "雙床",
"id": "300781"
}, {
"name": "單人床",
"id": "300782"
}, {
"name": "多張床",
"id": "300783"
}]
}, {
"name": "早餐",
"type": "radio",
"list": [{
"name": "含早餐",
"id": "400780"
}, {
"name": "單份早餐",
"id": "400781"
}, {
"name": "雙份早餐",
"id": "400782"
}]
}]
}
]
}