UITableView複雜介面處理

董永勝發表於2017-09-22

UI給的設計稿是這樣的:

設計稿要求
設計稿要求

需求分析:

  • 在訂單操作項,如果是收起的狀態,就是一個普通的列表,遂考慮採用UITableView。
  • 點選訂單操作按鈕,cell的高度會改變,所以會有一個重新整理的過程,在heightForRowAtIndexPath方法裡作出判斷如果indexPath.row等於選中的cell的序號就給他重新的賦值高度。

對後臺介面的分析:

  • 後臺介面分為兩個部分,訂單列表介面和訂單詳情介面,進入介面後先去呼叫訂單列表介面獲得需要展示的訂單資料。
  • 點選訂單的詳情,根據訂單ID獲取詳情資料,在變長的cell上展示出來。

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

  • 定義一個selectedN變數來存取需要改變狀態的序號。
  • 自定義的cell裡面,分成兩部分,上面是一直展示的部分,下面是會根據狀態展示或隱藏的部分,點選狀態改變按鈕,下面的部分選擇隱藏或展示,heightForRowAtIndexPath方法里根據selectedN來改變cell的高度。
  • 在用第一個介面獲得資料後更新列表,然後迴圈遍歷模型陣列獲取訂單ID,緊接著馬上呼叫第二個介面獲取訂單詳情,將詳情模型存到全域性可變陣列裡,這時候不要更新,不過要記得在cellForRowAtIndexPath裡面將兩個模型傳入,注意在傳入第二個模型的時候記得判斷陣列是否為空。
  • 根據上文思路,當點選狀態改變按鈕的時候會有更新,這時候又有資料,又進行了傳值,所以就大功告成了,而且不會造成卡頓,因為我們是在使用者未進行操作的時候進行的資料獲取和解析。

希望我的思路可以幫助你解決tableView複雜介面的處理。

相關文章