Сегментированный элемент управления для iPhone не работает

#iphone #objective-c

#iPhone #objective-c

Вопрос:

У меня есть сегментированный элемент управления со следующим кодом в его методе действия:

 -(IBAction)toggleControls:(id)sender{
    if([sender selectedSegmentIndex] == kSwitchesSegmentIndex){
        leftSwitch.hidden = NO;
        rightSwitch.hidden = NO;
        doSomethingButton.hidden = YES;
    }

    else{
        leftSwitch.hidden = YES;
        rightSwitch.hidden = YES;
        doSomethingButton.hidden = NO;
    }
}
  

Однако, когда я запускаю программу, я получаю сообщение об ошибке с kSwitchesSegmentIndex . Это говорит о том, что kSwitchesSegmentIndex это необъявленный идентификатор. Кто-нибудь может мне помочь с тем, что здесь не так?

Комментарии:

1. Что такое kSwitchSegmentIndex? Где вы его определяете / объявляете?

2. что это за kSwitchesSegmentIndex?

Ответ №1:

Вы должны показать нам, где kSwitchesSegmentIndex определяется. Соглашение заключается в определении таких переменных, как:

 #define kSwitchesSegmentIndex 1
  

Или вы могли бы определить его как int:

 int kSwitchesSegmentIndex = 1;
  

Поскольку ему не нужно изменять значение, первый вариант может быть лучшим.

Пример:

 #include <AVFoundation/AVFoundation.h>

#define kMyConstant1 0
#define kMyConstant2 1

@implementation MyClass
  

Комментарии:

1. что означает #define и куда мне его поместить?

2. Это направление для процессора — указывает ему присвоить значение этому термину. Похож на переменную, но имеет постоянное значение (я полагаю, поэтому обычно используется префикс k). Наиболее распространенным является размещение его перед вашим оператором @implementation в файле .m. Смотрите обновленный ответ для примера. В этом случае вам нужно будет установить значения, основанные на том, для какого переключателя вы тестируете

Ответ №2:

Вы не объявили kSwitchesSegmentIndex в своем коде ,

Сделайте что-нибудь

 #define kSwitchesSegmentIndex 0
  

Комментарии:

1. Куда мне нужно поместить этот код? Также, что означает #define?

2. Поместите его в тот же файл, где вы хотите его использовать ,

Ответ №3:

Вам нужно задать этому неопределенному символу некоторое значение.

Переменная, которую вы использовали kSwitchesSegmentIndex , нигде не объявлена в вашем коде.

Поэтому просто объявите свою константу со значением, подобным этому:

 #define kSwitchesSegmentIndex 1
  

Ответ №4:

Вы допустили ошибки в объявлении kSwitchesSegmentIndex .