#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
.