2010-04-09 100 views
0

我做了一個有趣的應用程序,並想知道如何實現對應用程序的結賬/籃系統。如何實現結賬/籃系統

基本上的產品列表是從XML文件中,然後在一個UITableView控制器顯示形式的Web服務器拉入。點擊單元格可讓用戶更詳細地瞭解產品。

該應用程序將需要能夠獲得的產品爲箱型的東西,這就是我卡住。

有沒有我可以看看任何代碼樣本?

回答

0

如果您爲數據選擇適當的格式,則此任務很簡單。 ObjC中最自然的XML represantation是NSDictionaries/NSArrays樹。在simlest情況下,必須的項目的NSArray(與您在tableview中顯示)它們中的每個的NSDictionary包含「ITEMNAME」鍵,「ITEMPRICE」等,這是很容易在表訪問與小區索引在數組項來顯示:

-(UITableViewCell *)tableView:(UITableView *)tableView 
     cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSDictionary * item = [allItems objectAtIndex:indexPath.row]; 
    NSString * cellTitle = [item objectForKey:@"ItemName"]; 
    ... 
} 

當項目cliked打開DetailViewController並通過參考所選項目:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath 
*)indexPath{ 
    MyDetailViewController * myDetailViewController = [[MyDetailViewController alloc] init]; 
    //MyDetailViewController should have a property of NSDictionary type, let it be "item" 
    myDetailViewController.item = [allItems objectAtIndex:indexPath.row]; 
    //pass also ref to basket 
    myDetailViewController.basket = basket; 
    [self.myDetailViewController pushViewController:dvController animated:YES]; 
    [myDetailViewController release]; 

} 

顯示詳細控制器的所有項目屬性。

籃子是NSMutableDictionaries的的NSMutableDictionary。每個backet項目鍵都是某個item屬性在所有項目中唯一的,例如「ItemName」。每個backet項目值應該包含對原始數組中項目的引用。在MyDetailViewController可以籃添加項目,如:

-(void)addToBasket{ 
    NSDictionary * itemToAdd = [NSDictionary dictionaryWithObjectsAndKeys: 
     item, @"item", // this is reference to item from original array 
     [NSNumber numberWithInt:amount], @"amount", // or some other properties 
     nil];  
     [self.basket setObject:itemToAdd forKey:[item objectForKey:@"ItemName"]]; 
} 

當打開DetailViewController檢查,如果籃子中已經包含CURENT項目:

if ([self.basket objectForKey:[item objectForKey:@"ItemName"]) 

如果有的話,表明CURENT項目已添加到購物籃,並提供選項刪除它或更改金額。