Проблемы с настройкой свойств объекта с помощью UISegmentedControl

Я хочу, чтобы оба поля UISegmentedControl устанавливали свойства объекта itemCondition и itemLocation в соответствующие значения в зависимости от того, какая кнопка нажата.

Затем это значение будет отправлено в функцию облачного кода Parse в качестве параметра, как показано в функции submitButton. Я знаю, что, например, с minPrice и maxPrice это значения, предоставляемые пользователем, поэтому вы можете отправить self.minPrice.text в качестве параметра.

Однако установка UISegmentedControl на self.itemCondition и отправка его в качестве параметра, похоже, не работает. Поскольку сегментированная кнопка устанавливает значение, а не пользователь явно вводит что-то в текстовое поле, я предполагаю, что это делается по-другому, я просто не уверен, как это сделать.

Это код из моего критерияViewController, который обрабатывает все упомянутое.

- (IBAction)conditionToggle:(id)sender{

    if(Segment.selectedSegmentIndex == 0){
        self.itemCondition == 'new';
    }
    else if(Segment.selectedSegmentIndex == 1){
        self.itemCondition == 'any';
    }

}

- (IBAction)itemLocationToggle:(id)sender {

    if(Segment.selectedSegmentIndex == 0){
        self.itemLocation == 'US';
    }
    else if(Segment.selectedSegmentIndex == 1){
        self.itemLocation == 'WorldWide';
    }
}

- (IBAction)submitButton:(id)sender
{
    if (self.itemSearch.text.length > 0) {

        //add all the info to users respective category object


        //perform search with criteria just submitted
        [PFCloud callFunctionInBackground:@"eBayCriteriaSearch"
                           withParameters:@{@"item": self.itemSearch.text,
                                            @"minPrice": self.minPrice.text,
                                            @"maxPrice": self.maxPrice.text,
                                            @"itemCondition": self.itemCondition,
                                            @"itemLocation": self.itemLocation,}
                                    block:^(NSString *result, NSError *error) {

                                        if (!error) {
                                            NSLog(@"The result is '%@'", result);

                                            if ([result intValue] == 1) {
                                                [self performSegueWithIdentifier:@"ShowMatchCenterSegue" sender:self];
                                            } else {
                                                [self performSegueWithIdentifier:@"ShowCriteriaSegue" sender:self];
                                            }

                                        }
                                    }];
    }
}

person Ghobs    schedule 22.04.2014    source источник


Ответы (1)


У вас есть двойное равно в вашем назначении для self.itemCondition. Это оператор сравнения. Вам нужно использовать только '=' для присвоения значения.

Кроме того, если itemCondition является NSString, вам нужно изменить синтаксис для каждого присваивания, чтобы он выглядел так:

self.itemCondition = @"новый";

Обратите внимание на @ и двойные кавычки.

Кроме того, я бы, вероятно, использовал оператор switch вместо нескольких других операторов if, поскольку в будущем у вас может быть больше сегментов. Итак, вот как будет выглядеть для меня метод события для вашего сегментированного элемента управления itemCondition.

- (IBAction)mySegmentedControl_ValueChanged:(id)sender {

    switch (self.mySegmentedControl.selectedSegmentIndex) {

        default:
        case 0:
            self.itemCondition = @"new";
            break;

        case 1:
            self.itemCondition = @"any";
            break;
    }
}
person Matt Becker    schedule 22.04.2014
comment
Я понимаю что ты имеешь ввиду. Что такое mySegmentedControl в данном случае? Это свойство я должен создать? - person Ghobs; 22.04.2014
comment
Это свойство, обычно IBOutlet. Это будет выглядеть примерно так: @property (weak, nonatomic) IBOutlet UISegmentedControl *mySegmentedControl; Вы можете создать его с помощью конструктора интерфейсов developer.apple .com/library/ios/recipes/ - person Matt Becker; 23.04.2014
comment
Не забудьте отметить это как правильный ответ, если это так, или проголосовать за, если это просто помогло вам. - person Matt Becker; 23.04.2014