我做了一個有趣的應用程序,並想知道如何實現對應用程序的結賬/籃系統。如何實現結賬/籃系統
基本上的產品列表是從XML文件中,然後在一個UITableView控制器顯示形式的Web服務器拉入。點擊單元格可讓用戶更詳細地瞭解產品。
該應用程序將需要能夠獲得的產品爲箱型的東西,這就是我卡住。
有沒有我可以看看任何代碼樣本?
我做了一個有趣的應用程序,並想知道如何實現對應用程序的結賬/籃系統。如何實現結賬/籃系統
基本上的產品列表是從XML文件中,然後在一個UITableView控制器顯示形式的Web服務器拉入。點擊單元格可讓用戶更詳細地瞭解產品。
該應用程序將需要能夠獲得的產品爲箱型的東西,這就是我卡住。
有沒有我可以看看任何代碼樣本?
如果您爲數據選擇適當的格式,則此任務很簡單。 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項目已添加到購物籃,並提供選項刪除它或更改金額。