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

У меня есть контроль сегмента и такой код в файле .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


person Anton    schedule 07.12.2013    source источник
comment
Это не объявление UIButton. вы объявили метод. Д   -  person Bhumeshwer katre    schedule 07.12.2013


Ответы (4)


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

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

 @interface yourViewController : UIViewController {

   UIButton *button;

 }

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

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

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

[button setTitle:@"Title" forState: UIControlStateNormal];
person Ilario    schedule 07.12.2013

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

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

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

[self.mySegmentControl setTitle:@"New title" forSegmentAtIndex:0];
person AXE    schedule 07.12.2013
comment
Нет, я хочу изменить кнопку действия внутри элемента управления сегментом. Например: если selectedSegmentIndex == 0, кнопка внутри будет называться Button, а когда selectedSegmentIndex == 1, кнопка внутри будет называться Button2. У меня проблема, потому что это не кнопка по умолчанию, а кнопка действия - person Anton; 07.12.2013
comment
Я не уверен, что вы подразумеваете под кнопкой действия внутри элемента управления сегментом. Если это какой-то UIButton, который вы хотите изменить при использовании элемента управления сегментом... Вам нужно свойство IBOutlet этой кнопки. Затем вы сможете установить его заголовок с помощью [button setTitle:@"Button!"]; - person AXE; 07.12.2013

- (IBAction)button:(id)sender; является методом, а не идентификатором

поэтому для изменения заголовка кнопки «Текст действия» вы должны написать следующий код

-(IBAction)sectionswitch:(id)sender {

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

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

}
person Haresh Ghatala    schedule 07.12.2013
comment
Я не хочу менять название элемента управления сегментом. внутри каждого элемента управления сегментом есть одна кнопка действия (номер телефона). поэтому, если control.selectedSegmentIndex == 0, я хочу изменить номер, а если control.selectedSegmentIndex == 1, я хочу изменить его на другой номер - person Anton; 07.12.2013
comment
для кнопки изменения действия вы должны сначала указать номер тега для этой кнопки и применить следующий код [(UIButton *)[sender viewWithTag:TagNo] setTitle:@PhoneNo forState:UIControlStateNormal]; - person Haresh Ghatala; 07.12.2013

Свифт 4

    segmentButton.setTitle("hello", forSegmentAt: 0)
person Ahmadreza    schedule 07.10.2018