UISegmentedControl以编程方式更改段的数量

我有一个名为SegmentedAnswer的视图中的UISegmentedControl,有四个部分。 有没有办法改变程序段的数量? 非常感谢!

是的,你可以使用

removeSegmentAtIndex:(NSUInteger) animated:(BOOL) 

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

要完全replace这些段,可以使用以下function:

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

希望这可以帮助。

这里有一个小小的Swift扩展,用新值的数组replace当前的segmentedControl

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

这里是一个Swift扩展,用一系列stringreplace段。 它与这里给出的另一个答案类似,只是它可以用于任何序列,这意味着您也可以传递片段,集合等。

 extension UISegmentedControl { /// Replace the current segments with new ones using a given sequence of string. /// - parameter withTitles: The titles for the new segments. public func replaceSegments<T: Sequence>(withTitles: T) where T.Iterator.Element == String { removeAllSegments() for title in withTitles { insertSegment(withTitle: title, at: numberOfSegments, animated: false) } } } 

为我工作,UIsegmentedControll包含两个段,我想在索引2中添加一个,在swift中使用此代码2.2使用:

 SEG_TipoFiltro.insertSegmentWithTitle("Title", atIndex: 2, animated: false) 

为了完整起见(因为我在这里结束了寻找如何在xib中实现同样的事情)这里是如何在xib中做到这一点:

在这里输入图像说明