Frage

Ich bin eine App für Spaß machen und würde gerne wissen, wie ein Kasse / Warenkorb-System auf der App zu implementieren.

Im Grunde eine Liste von Produkten gezogen in dem von einem Webserver in Form von XML-Datei, die dann in einem UITableView-Controller angezeigt wird. Ein Tippen auf der Zelle führt den Benutzer zu einem detaillierteren Überblick über das Produkt.

Die App müsste in der Lage sein, das Produkt in einen Korb geben, was zu bekommen, und das ist, wo ich stecken bin immer.

Gibt es irgendwelche Codebeispiele, dass ich einen Blick darauf werfen könnte?

War es hilfreich?

Lösung

Diese Aufgabe ist einfach, wenn Sie entsprechendes Format für die Daten zur Verfügung. Die meisten natürlichen XML represantation in ObjC ist NSDictionaries / NSArrays Baum. In simlest Fall haben Sie NSArray von Gegenständen (die zeigen Ihnen in Tableview), die jeweils von ihnen ist NSDictionary mit Tasten wie „ItemName“, „ItemPrice“ usw. Es ist einfach in der Tabelle zu zeigen, ist es, Elemente in Array mit Zellenindex zugreifen:

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

Wenn Artikel cliked öffnen Ihre DetailViewController und übergeben Bezug auf ausgewähltes Element:

-(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]; 

}

Alle Elementeigenschaften im Detail Controller zeigen.

Basket ist NSMutableDictionary von NSMutableDictionaries. Jeder Backet Artikel Schlüssel einige Artikel Eigenschaft einzigartig unter allen Artikeln zum Beispiel „ItemName“. Jeder Backte Elementwert sollte Bezug auf Artikel in Original-Array enthalten. In MyDetailViewController können Sie Artikel in den Warenkorb legen, wie:

-(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"]]; 
}

Wenn offen DetailViewController prüfen, ob Korb bereits curent Artikel enthält:

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

und wenn ja, dass curent Artikel zeigt bereits in der Warenkorb gelegt, und Option bietet sie oder Änderungsbetrag zu entfernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top