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) } }}