UI给的设计稿是这样的:
需求分析:
- 在订单操作项,如果是收起的状态,就是一个普通的列表,遂考虑采用UITableView。
- 点击订单操作按钮,cell的高度会改变,所以会有一个刷新的过程,在heightForRowAtIndexPath方法里作出判断如果indexPath.row等于选中的cell的序号就给他重新的赋值高度。
对后台接口的分析:
- 后台接口分为两个部分,订单列表接口和订单详情接口,进入界面后先去调用订单列表接口获得需要展示的订单数据。
- 点击订单的详情,根据订单ID获取详情数据,在变长的cell上展示出来。
综上,得到了下面的解决方案:
- 定义一个selectedN变量来存取需要改变状态的序号。
- 自定义的cell里面,分成两部分,上面是一直展示的部分,下面是会根据状态展示或隐藏的部分,点击状态改变按钮,下面的部分选择隐藏或展示,heightForRowAtIndexPath方法里根据selectedN来改变cell的高度。
- 在用第一个接口获得数据后更新列表,然后循环遍历模型数组获取订单ID,紧接着马上调用第二个接口获取订单详情,将详情模型存到全局可变数组里,这时候不要更新,不过要记得在cellForRowAtIndexPath里面将两个模型传入,注意在传入第二个模型的时候记得判断数组是否为空。
- 根据上文思路,当点击状态改变按钮的时候会有更新,这时候又有数据,又进行了传值,所以就大功告成了,而且不会造成卡顿,因为我们是在用户未进行操作的时候进行的数据获取和解析。
希望我的思路可以帮助你解决tableView复杂界面的处理。