Изменить текст кнопки внутри элемента управления сегментом

У меня есть сегмент управления и код, как это в файле.m

-(IBAction)sectionswitch:(id)sender {

    if (control.selectedSegmentIndex == 0) {
        UIImage *dekabristov = [UIImage imageNamed:@"dekabristov.png"];
        [image setImage:dekabristov];
    }

    if (control.selectedSegmentIndex == 1) {
        UIImage *fabrika = [UIImage imageNamed:@"fabrika.jpg"];
        [image setImage:fabrika];
    }

}

Как я могу изменить название кнопки действия внутри элемента управления? Если я напишу [button setTitle:@"Button!"]; Xcode говорит "Использовать необъявленный идентификатор" кнопка ", но -(IBAction)button:(id)sender; в.h файле

4 ответа

Решение

Таким образом, вы не объявили кнопку, а только действие под названием "кнопка".

в вашем.h файле вы должны сделать:

 @interface yourViewController : UIViewController {

   UIButton *button;

 }

а для изменения заголовка сегмента управления вы можете сделать:

 [yourSegmentControl setTitle:@"Button!" forSegmentAtIndex:0]; //0 is the first

если вы хотите изменить заголовок UIButton:

[button setTitle:@"Title" forState: UIControlStateNormal];

Если я правильно понял, вы хотите динамически изменить название сегментов. Вы можете сделать это с помощью метода UISegmentedControl

- (void)setTitle:(NSString *)title forSegmentAtIndex:(NSUInteger)segment

Вам нужно будет иметь свойство outlet элемента управления сегмента в вашем xib-файле. Тогда вы просто делаете это:

[self.mySegmentControl setTitle:@"New title" forSegmentAtIndex:0];

- (IBAction) кнопка:(id) отправитель; метод, а не идентификатор

поэтому для изменения названия кнопки "Текст действия" необходимо написать следующий код

-(IBAction)sectionswitch:(id)sender {

    if (control.selectedSegmentIndex == 0) {
        ...
        [sender setTitle:@"AAAAA" forSegmentAtIndex:0];
        ...
    }

    if (control.selectedSegmentIndex == 1) {
        ...
        [sender setTitle:@"BBBBB" forSegmentAtIndex:1];
        ...
    }

}

Swift 4

    segmentButton.setTitle("hello", forSegmentAt: 0)
Другие вопросы по тегам