對(duì)復(fù)雜tableView的處理

UI給的設(shè)計(jì)稿是這樣的:

設(shè)計(jì)稿要求

需求分析:

  • 在訂單操作項(xiàng),如果是收起的狀態(tài),就是一個(gè)普通的列表,遂考慮采用UITableView。
  • 點(diǎn)擊訂單操作按鈕,cell的高度會(huì)改變,所以會(huì)有一個(gè)刷新的過程,在heightForRowAtIndexPath方法里作出判斷如果indexPath.row等于選中的cell的序號(hào)就給他重新的賦值高度。

對(duì)后臺(tái)接口的分析:

  • 后臺(tái)接口分為兩個(gè)部分,訂單列表接口和訂單詳情接口,進(jìn)入界面后先去調(diào)用訂單列表接口獲得需要展示的訂單數(shù)據(jù)。
  • 點(diǎn)擊訂單的詳情,根據(jù)訂單ID獲取詳情數(shù)據(jù),在變長(zhǎng)的cell上展示出來。

綜上,得到了下面的解決方案:

  • 定義一個(gè)selectedN變量來存取需要改變狀態(tài)的序號(hào)。
  • 自定義的cell里面,分成兩部分,上面是一直展示的部分,下面是會(huì)根據(jù)狀態(tài)展示或隱藏的部分,點(diǎn)擊狀態(tài)改變按鈕,下面的部分選擇隱藏或展示,heightForRowAtIndexPath方法里根據(jù)selectedN來改變cell的高度。
  • 在用第一個(gè)接口獲得數(shù)據(jù)后更新列表,然后循環(huán)遍歷模型數(shù)組獲取訂單ID,緊接著馬上調(diào)用第二個(gè)接口獲取訂單詳情,將詳情模型存到全局可變數(shù)組里,這時(shí)候不要更新,不過要記得在cellForRowAtIndexPath里面將兩個(gè)模型傳入,注意在傳入第二個(gè)模型的時(shí)候記得判斷數(shù)組是否為空。
  • 根據(jù)上文思路,當(dāng)點(diǎn)擊狀態(tài)改變按鈕的時(shí)候會(huì)有更新,這時(shí)候又有數(shù)據(jù),又進(jìn)行了傳值,所以就大功告成了,而且不會(huì)造成卡頓,因?yàn)槲覀兪窃谟脩粑催M(jìn)行操作的時(shí)候進(jìn)行的數(shù)據(jù)獲取和解析。

希望我的思路可以幫助你解決tableView復(fù)雜界面的處理。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容