저는 재미있는 앱을 만들고 있는데 앱에 체크 아웃/바구니 시스템을 구현하는 방법을 알고 싶습니다.체크 아웃/바구니 시스템 구현 방법
기본적으로 제품 목록은 XML 파일의 형태로 웹 서버에서 가져온 다음 UITableView 컨트롤러에 표시됩니다. 셀을 탭하면 사용자가 제품에 대한보다 자세한 개요로 이동합니다.
앱이 제품을 바스켓 유형으로 가져올 수 있어야하고 이것이 내가 고생하는 곳입니다.
내가 볼 수있는 코드 샘플이 있습니까?
저는 재미있는 앱을 만들고 있는데 앱에 체크 아웃/바구니 시스템을 구현하는 방법을 알고 싶습니다.체크 아웃/바구니 시스템 구현 방법
기본적으로 제품 목록은 XML 파일의 형태로 웹 서버에서 가져온 다음 UITableView 컨트롤러에 표시됩니다. 셀을 탭하면 사용자가 제품에 대한보다 자세한 개요로 이동합니다.
앱이 제품을 바스켓 유형으로 가져올 수 있어야하고 이것이 내가 고생하는 곳입니다.
내가 볼 수있는 코드 샘플이 있습니까?
데이터에 적합한 형식을 선택하면이 작업이 간단합니다. ObjC에서 가장 자연스러운 XML represantation은 NSDictionaries/NSArrays 트리입니다. 가장 단순한 경우에는 NSArray 항목이 있습니다 (테이블 뷰에 표시되는 항목). 각 항목은 "ItemName", "ItemPrice"등과 같은 키를 가진 NSDictionary입니다. 셀 인덱스가있는 배열의 항목에 액세스하는 것이 쉽습니다.
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSDictionary * item = [allItems objectAtIndex:indexPath.row];
NSString * cellTitle = [item objectForKey:@"ItemName"];
...
}
항목이 DetailViewController를 열고 선택한 항목에 대한 참조를 전달 cliked 경우 :
-(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];
}
자세히 컨트롤러에있는 모든 항목 속성을 표시합니다.
바스켓은 NSMutableDictionary of NSMutableDictionaries입니다. 각 backet item 키는 "ItemName"과 같이 모든 항목에서 고유 한 일부 항목 속성입니다. 각 backet 항목 값은 원래 배열의 item에 대한 참조를 포함해야합니다. 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 항목이 이미 바구니에 추가 된 것을 보여 및 제공을 옵션을 제거하거나 금액을 변경하십시오.