سؤال

أقوم بعمل تطبيق للمتعة وأرغب في معرفة كيفية تنفيذ نظام الخروج/السلة على التطبيق.

في الأساس ، يتم سحب قائمة بالمنتجات من خادم ويب في شكل ملف XML ، والذي يتم عرضه بعد ذلك في وحدة تحكم UitableView. يأخذ النقر على الخلية المستخدم إلى نظرة عامة أكثر تفصيلاً على المنتج.

يجب أن يكون التطبيق قادرًا على إدخال المنتج في نوع سلة ، وهذا هو المكان الذي أتعثر فيه.

هل هناك أي عينات رمز يمكنني إلقاء نظرة عليها؟

هل كانت مفيدة؟

المحلول

هذه المهمة بسيطة إذا اخترت التنسيق المناسب لبياناتك. معظم تمثيل XML الطبيعي في OBJC هو شجرة 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 افتح التفاصيل الخاصة بك conntroller ومرجع مرجع إلى العنصر المحدد:

-(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 من nsmutabletictionaries. كل مفتاح عنصر عكسي هو بعض خاصية عنصر فريدة من نوعها بين جميع العناصر على سبيل المثال "itemName". يجب أن تحتوي كل قيمة عنصر عكسي على مرجع للعنصر في المصفوفة الأصلية. في 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"]]; 
}

عند فتح التفاصيل التفصيلية Controller ، تحقق مما إذا كانت السلة تحتوي بالفعل على عنصر curent:

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

وإذا كان الأمر كذلك ، أظهر هذا العنصر الذي تم إضافته بالفعل إلى السلة ، وتوفير خيار لإزالته أو تغيير المبلغ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top