0

У меня есть сегментированный элемент управления, который должен изменить значение моей переменной при выборе каждой сегментированной кнопки управления. Например, если выбрана кнопка 0, переменной должна быть назначена «1000» или если выбрана кнопка 1, переменной должно быть присвоено значение «2000».Сегментированные элементы управления не меняют значение моей переменной

-(IBAction)segmentbutton1:(id)sender { 

    if (segmentController1.selectedSegmentIndex == 0) { 
     settingVar1 = 1000; 
    } 
    if (segmentController1.selectedSegmentIndex == 1) { 
     settingVar1 = 2000; 
    } 
    if (segmentController1.selectedSegmentIndex == 2) { 
     settingVar1 = 3000; 
    } 
} 

Я синтезировал переменную "settingVar1" в моей .m файл

@interface ViewController() 
@end 
@synthesize settingVar1; 

и я заявил в моем файле .h.

@interface ViewController : UIViewController { 

    int settingVar1; 

и я также сделал свойство переменной в файле .h.

@property (nonatomic)int settingVar1; 

Есть ли что-то, что мне нужно изменить? Если вам нужно увидеть какой-либо другой код, пожалуйста, дайте мне знать. Заранее благодарим за любой совет, который дается.

+0

Вставьте свой код в свой код, откуда вы его не изменили? действительно ли называется функция? – adali

+0

Я добавил NSLog, и значение возвращает «0» каждый раз. ** bold ** 'NSLog (@ "settingVar1 равно% i", settingVar1);' – user2495189

+0

Поместите некоторый журнал, чтобы узнать, вызывается ли 'segmentbutton1:' или нет, и каково значение 'segmentController1.selectedSegmentIndex' –

ответ

0

Проверьте, пожалуйста, вы должны сделать это следующим образом:

- (void) viewDidLoad 
{ 
    [segmentController1 addTarget: self 
          action: @selector(segmentbutton1:) 
       forControlEvents: UIControlEventValueChanged]; 
} 

- (IBAction) segmentbutton1: (id)sender 
{ 
    if (segmentController1.selectedSegmentIndex == 0) { 
     settingVar1 = 1000; 
    } 
    if (segmentController1.selectedSegmentIndex == 1) { 
     settingVar1 = 2000; 
    } 
    if (segmentController1.selectedSegmentIndex == 2) { 
     settingVar1 = 3000; 
    } 
} 
0

вы можете получить помощь по этой ссылке: enter link description here

Пожалуйста, убедитесь, что ваш метод действия подключается xib файл с UISegmentedControl или нет. Лучший способ изменить значение. вы должны использовать это

-(IBAction) segmentbutton1: (id)sender 
{ 
     settingVar1 = (segmentController1.selectedSegmentIndex + 1) * 1000; 

} 
0

Я понял. В моем файле .xib (вкладка выбора атрибутов) у меня была первая кнопка в моем контроллере сегмента «выбрано» по умолчанию, поэтому, когда я тестировал приложение, я не нажимал ни на одну из кнопок управления сегментом, потому что предположил, что кнопка с нажатой будет имеют значение. Я удалил «выбранную» опцию из элементов управления сегмента, из-за чего мне пришлось щелкнуть кнопку, и эта формула работала. Спасибо всем, кто предложил мне помощь.