Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
d3vn
2 / 2 / 3
Регистрация: 18.11.2013
Сообщений: 118
#1

Корзина магазина - Objective-C

29.07.2015, 12:02. Просмотров 539. Ответов 0
Метки нет (Все метки)

Всем привет, ребят, подскажите, пожалуйста, нужны хоть какие-то идеи, уже не могу:

Есть корзина магазина, которая представляет из себя tableView. Каждый товар - это ее cell. В каждом cell есть checkBox, который при нажатии добавляет товар в прайс (загорается галочка) и считается общая стоимость. Но нужно сделать так, чтобы товары, попадая в корзину, уже имели этот чекбокс активным и автоматически считалась их стоимость. Есть метод, который вызывается при нажатии на чекбокс и проделывает всю эту процедуру (загорание чекбокса и добавление товара в подсчет прайса). Я беру этот метод и вызываю вроде как при создании cell, вроде все должно работать, но в него приходит из cell.checkBox - indexPath: nil, item: nil, а если передавать и indexPath и item, то он бесконечно бегает по всем позициям в корзине или все равно ничего не делает. В чем может быть ошибка?
Прикладываю листинги addTarget, который срабатывает при нажатии по чекбоксу, сам метод, и как я вызываю этот метод в cellForRow.

Сам addTarget:

Objective-C
1
[cell.checkBox addTarget:self action:@selector(radioControlDidChangeValue:) forControlEvents:UIControlEventValueChanged];
Метод, который все делает (из addTarget)

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- (void)radioControlDidChangeValue:(AIMRadioControl *)control {
 
    AIMBucketTableViewCell *cell = [control searchForSuperViewOfClass:[AIMBucketTableViewCell class]];
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    WishListItem *item = [self.fetchedController objectAtIndexPath:indexPath];
    item.selectedRaw = control.data.selected;
    
    [control changeSelectedUI:YES];
 
    id <NSFetchedResultsSectionInfo> sectionInfo = self.fetchedController.sections[indexPath.section];
    NSArray *itemObjects = [sectionInfo objects];
 
    BOOL selectedHeader = YES;
    NSEnumerator *iterator = [itemObjects objectEnumerator];
    item = [iterator nextObject];
    while (selectedHeader && item != nil) {
        if (!item.selectedRaw && item.product.isAvailableRaw) {
            selectedHeader = NO;
        }
 
        item = [iterator nextObject];
    }
 
    AIMBucketHeaderView *headerView = (AIMBucketHeaderView *) [self.tableView headerViewForSection:indexPath.section];
    headerView.radioControll.data.selected = selectedHeader;
    [headerView.radioControll changeSelectedUIAnimatedWithDelay:0.10];
    
    [WishListItem saveWishListLastChangeDateInUserDefaults:[NSDate new]];
    
    [self.summaryView calculateTotalPrice];
    
}
Метод ячейки таблицы

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
    if ([[self.fetchedController fetchedObjects] count] == 0) {
        return [self emptyCellForTableView:tableView atIndexPath:indexPath];
    }
 
    WishListItem *cartItem = [self.fetchedController objectAtIndexPath:indexPath];
    Product *pr = cartItem.product;
 
 
    AIMBucketTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"bucketCell" forIndexPath:indexPath];
    
    
    
    //Indice
    switch (pr.indiceRaw) {
        case BIOTypeNone:
            cell.indiceImageView.image = nil;
            break;
        case BIOTypeBIO:
            cell.indiceImageView.image = [UIImage imageNamed:@"bio.png"];
            break;
        case BIOTypeSG:
            cell.indiceImageView.image = [UIImage imageNamed:@"sg.png"];
            break;
    }
 
    //Text
    cell.maxLimitLabel.text = NSLocalizedString(@"Max avail.", nil);
    cell.countTextField.text = [self.countNumberFormatter stringFromNumber:cartItem.count];
    cell.productNameLabel.text = pr.fullName;
    cell.productSubtitle.text = pr.manufacturer;
    cell.productPriceLabel.text = [self.currencyFormatter stringFromNumber:pr.price];
    cell.sumPriceLabel.text = [self.currencyFormatter stringFromNumber:@([pr.price doubleValue] * [cartItem.count integerValue])];
    //Avail mode
    cell.modeState = [self modeForWishListItem:cartItem];
    [cell.modeState setCurrentMode];
    
    ////////////////////////CheckBox
 
    [cell.checkBox setIsTurnOn:YES]; //X or check/empty on checkbox (image)
    
    if (cell.wasChecked == NO) { //If checkbox didnt get a default check
       [self radioControlDidChangeValueOnDefault:cell.checkBox withIndexPath:indexPath]; //Get him default check (doesnt work)
    }
    cell.wasChecked = YES; //Checkbox has had a default check
    
    [cell.checkBox changeSelectedUI:YES]; //Change checkbox image (check or empty)
    
    cell.checkBox.data.selected = cartItem.selectedRaw; //?????????????
 
    cell.checkBox.backgroundColor = [UIColor whiteColor];
    
    //Actions
    
    [cell.checkBox addTarget:self action:@selector(radioControlDidChangeValue:) forControlEvents:UIControlEventValueChanged];
    
    [cell.minButton addTarget:self action:@selector(minuButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    
    [cell.plusButton addTarget:self action:@selector(plusButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    
    [cell setTarget:self actionForImageView:@selector(cellImagePressed:)];
    
    [cell.relatedButton addTarget:self action:@selector(showRelatedProdutcs:) forControlEvents:UIControlEventTouchUpInside];
 
    //Images
 
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:[SAVE_PATH stringByAppendingPathComponent:pr.imagePath]];
 
    if (!image) {
        if (pr.imagePath) {
            NSString *imageName = [[pr.imagePath lastPathComponent] stringByDeletingPathExtension];
            NSString *imageType = [pr.imagePath pathExtension];
            NSString *bundlePath = [[NSBundle mainBundle] pathForResource:imageName ofType:imageType];
            if (bundlePath != nil) {
                NSURL *preloadImageURL = [NSURL fileURLWithPath:bundlePath];
                image = [[UIImage alloc] initWithContentsOfFile:preloadImageURL.path];
            }
        }
    }
 
    if (!image) {
        image = [UIImage imageNamed:@"productImageTemplate.jpg"];
    }
 
    cell.productImageView.image = image;
 
    cell.rightButtons = @[[MGSwipeButton buttonWithTitle:NSLocalizedString(@"Delete", nil) backgroundColor:[UIColor redColor]]];
    cell.rightSwipeSettings.transition = MGSwipeTransitionStatic;
    cell.delegate = self;
 
    return cell;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2015, 12:02     Корзина магазина
Посмотрите здесь:

Корзина для интернет-магазина - PHP
Здравствуйте, я новичок и мне очень нужна корзина для моего интернет-магазина. Желательно через сессию. Напишите пожалуйста, кому не...

корзина интернет магазина с использованием ip - PHP
Делаю тут корзину для интернет магазина. Хочу испольховать в качестве идентификатора пользователя его ip, т.е. в корзине отображаются...

Корзина для интернет-магазина - C# ASP.NET
добрый день...есть список товаров, для выбора которых используются чеки...можно ли сделать так, чтобы после клика по чеку выбранная единица...

Простая корзина для интернет магазина - PHP
Здраствуйте, сейчас работаю над одним сайтом где необхадима простая корзина для покупок.В интернете нашел множество всяких примеров, но все...

Форма типа корзина интернет магазина - MS Access
Здравствуйте, нужно решить одну проблему: у меня есть форма куда добавляются записи по такому макросу. Первых 2 товара добавляются...

Корзина интернет магазина PHP массивы + сессии - PHP
Всем добрый день. Помогите пожалуйста разобраться с массивом внутри массива в сессии. Задачи: Проверить на существование массив...

Нужна корзина для интернет-магазина, на заказ - PHP
Нужна корзина для этого магазина www.shop.n-volna.ru

.NET 4.x Корзина интернет-магазина. Как лучше организовать - C# ASP.NET
Здравствуйте! обращаюсь к вам за советом. Есть зародыш интернет-магазина (БД уже написана), текущий этап - организация корзины...

Корзина для интернет-магазина на php и сессиях - PHP БД
Здравствуйте, необходимо разработать корзину товаров для интернет магазина , скажем у меня на сайте есть каталог товаров , у каждого товара...

Нужна корзина для интернет-магазина, на заказ----------> - Обо всем!
Для этого магазина www.n-volna.ru


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru