如何实现上面的效果呢,可以通过以下的链接实现 http://bbs.csdn.net/topics/390999364 里面的仅仅是思路,具体的还是要自己动手去玩,首先这个分为三部分,第一部分,是订单编号,取消按钮,这部分可以在tableVide的代理方法中实现- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{}这里面直接自己定义一个新的view,可以自己代码编写,也可以是xib。
然后就第二部分,下面的待付款,查看物流等等,这部分跟第一部分的实现方法是一样的也是在tableView的代理方法中- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{},第三部分也是最重要的部分,中间的商品图片,商品的名称,价格,数量等等,这部分要在UITableViewcell中来实现,实现代理方法,- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{} 这个方法是返回多少个section,应该不用多说了吧,
最主要的是下面的-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _cellData.count;
}这个方法是在section中有多少个数据,因为是动态的,每个cell中数据的个数是不确定的,所以这个返回的也是要根据请求过来的数据来进行操作的,我的解决方法是在创建一个新的可变数组,然后这个可变数组来 [countArr addObject:secDataArr];然后再上面的方法中-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [[countArr objectAtIndex:section] count];
}这样的话就可以动态的返回cell的数据的个数了。我遇到的问题是这个返回的数据是个二层数组,secDataArr就是第二个数组,在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{}这个方法中的实现的时候出现了一些问题,NewOrderList *newModel = _secCelldata[indexPath.row];
如果是这么写的时候,第一个cell的数据显示的是正确的,不管有几个数据。往下的cell显示的数据都是第一条的数据,如果改成NewOrderList *newModel = _secCelldata[indexPath.section]; 这么写的话,就是cell中的个数只能是一个数据,也就是那个二层数组里面的数据也是一个,如果数组中的数据是两个的话,动态的返回个数两个,这两个数据就是会显示的一样,往下一个cell就会显示二层数组的第二个,这样的话就是会显示错位。
如何解决呢 ,我想了想,这个方法只能一个页面显示固定的cell数,比如是五个,你就要创建五个可变数组,然后再请求数据中,
就是这样,然后再uitableViewCell的方法中
这样就可以实现了,只是很是呆板跟小儿科,但是也是一种解决方法。