UISegmentedControl change number of segments programmatically UISegmentedControl change number of segments programmatically ios ios

UISegmentedControl change number of segments programmatically


Yes, you can use

removeSegmentAtIndex:(NSUInteger) animated:(BOOL)

And

insertSegmentWithTitle:(NSString *) atIndex:(NSUInteger) animated:(BOOL)


To replace the segments entirely, you can use the following function:

- (void)setSegments:(NSArray *)segments{    [segmentController removeAllSegments];    for (NSString *segment in segments) {        [segmentController insertSegmentWithTitle:segment atIndex:segmentController.numberOfSegments animated:NO];    }}

Hope this helps.


And here's a little Swift extension to replace current segmentedControl with array of new values

Swift 3

extension UISegmentedControl {    func replaceSegments(segments: Array<String>) {        self.removeAllSegments()        for segment in segments {            self.insertSegmentWithTitle(segment, atIndex: self.numberOfSegments, animated: false)        }    }}

Swift 4

extension UISegmentedControl {    func replaceSegments(segments: Array<String>) {        self.removeAllSegments()        for segment in segments {            self.insertSegment(withTitle: segment, at: self.numberOfSegments, animated: false)        }    }}