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中做到这一点: