user1015777
user1015777

Reputation: 1021

UISegmentedControl text programmatically

I have created a UISegmentedControl with two segments using the interface builder (from storyboard), but I would like to set the text of the two segments programmatically. I want to do this because I am using NSLocalizedString for all of my buttons, labels, titles etc. I create all the stuff in interface builder and then I add text programmatically. I have manage to make every item to work that way but I cannot find a way to add text to my UISegmentedControl.

Is there any way to do that? I ma trying to use the following but because the segmented control is already created in the interface builder it does not work.

[segmentedControl initWithItems:[NSArray arrayWithObjects:NSLocalizedString(@"Title 1", @"Title 1"),NSLocalizedString(@"Title 2", @"Title 2"), nil]];

Thanks a lot

Upvotes: 70

Views: 49169

Answers (4)

Kiran Jadhav
Kiran Jadhav

Reputation: 3317

Updated :

Use below simple code to set UISegmentControl title programatically;

//.h file:

@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentControl;

// .m file:

- (void)viewDidLoad {

    [super viewDidLoad];

     [self.segmentControl setTitle:@"Love It" forSegmentAtIndex:0];
     [self.segmentControl setTitle:@"Hate It" forSegmentAtIndex:1];        
     [self.segmentControl setTitle:@"Ehh" forSegmentAtIndex:2];
}

Upvotes: 0

Kevin Singh
Kevin Singh

Reputation: 421

The correct answer for people using SWIFT 4 would be

segmentedControl.setTitle("Your Title", forSegmentAt: 0)

Upvotes: 17

Obliquely
Obliquely

Reputation: 7072

Use setTitle:forSegmentAtIndex: to assign the title to your segments of the segmented control.

Hope this would help you.

Upvotes: 9

shabbirv
shabbirv

Reputation: 9098

[segmentedControl setTitle:<YourLocalizedString> forSegmentAtIndex:0];

Upvotes: 198

Related Questions