如何實現(xiàn)上面的效果呢,可以通過以下的鏈接實現(xiàn) http://bbs.csdn.net/topics/390999364 里面的僅僅是思路,具體的還是要自己動手去玩,首先這個分為三部分,第一部分,是訂單編號,取消按鈕,這部分可以在tableVide的代理方法中實現(xiàn)- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{}這里面直接自己定義一個新的view,可以自己代碼編寫,也可以是xib。
然后就第二部分,下面的待付款,查看物流等等,這部分跟第一部分的實現(xiàn)方法是一樣的也是在tableView的代理方法中- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{},第三部分也是最重要的部分,中間的商品圖片,商品的名稱,價格,數(shù)量等等,這部分要在UITableViewcell中來實現(xiàn),實現(xiàn)代理方法,- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{} 這個方法是返回多少個section,應(yīng)該不用多說了吧,
最主要的是下面的-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _cellData.count;
}這個方法是在section中有多少個數(shù)據(jù),因為是動態(tài)的,每個cell中數(shù)據(jù)的個數(shù)是不確定的,所以這個返回的也是要根據(jù)請求過來的數(shù)據(jù)來進行操作的,我的解決方法是在創(chuàng)建一個新的可變數(shù)組,然后這個可變數(shù)組來 [countArr addObject:secDataArr];然后再上面的方法中-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [[countArr objectAtIndex:section] count];
}這樣的話就可以動態(tài)的返回cell的數(shù)據(jù)的個數(shù)了。我遇到的問題是這個返回的數(shù)據(jù)是個二層數(shù)組,secDataArr就是第二個數(shù)組,在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{}這個方法中的實現(xiàn)的時候出現(xiàn)了一些問題,NewOrderList *newModel = _secCelldata[indexPath.row];
如果是這么寫的時候,第一個cell的數(shù)據(jù)顯示的是正確的,不管有幾個數(shù)據(jù)。往下的cell顯示的數(shù)據(jù)都是第一條的數(shù)據(jù),如果改成NewOrderList *newModel = _secCelldata[indexPath.section]; 這么寫的話,就是cell中的個數(shù)只能是一個數(shù)據(jù),也就是那個二層數(shù)組里面的數(shù)據(jù)也是一個,如果數(shù)組中的數(shù)據(jù)是兩個的話,動態(tài)的返回個數(shù)兩個,這兩個數(shù)據(jù)就是會顯示的一樣,往下一個cell就會顯示二層數(shù)組的第二個,這樣的話就是會顯示錯位。
如何解決呢 ,我想了想,這個方法只能一個頁面顯示固定的cell數(shù),比如是五個,你就要創(chuàng)建五個可變數(shù)組,然后再請求數(shù)據(jù)中,
就是這樣,然后再uitableViewCell的方法中
這樣就可以實現(xiàn)了,只是很是呆板跟小兒科,但是也是一種解決方法。