Reputation: 1021
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
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
Reputation: 421
The correct answer for people using SWIFT 4 would be
segmentedControl.setTitle("Your Title", forSegmentAt: 0)
Upvotes: 17
Reputation: 7072
Use setTitle:forSegmentAtIndex: to assign the title to your segments of the segmented control.
Hope this would help you.
Upvotes: 9
Reputation: 9098
[segmentedControl setTitle:<YourLocalizedString> forSegmentAtIndex:0];
Upvotes: 198