我在名为SegmentedAnswer的视图中有一个UISegmentedControl,有四个段。有没有办法以编程方式更改段数?非常感谢!
是的,你可以使用
removeSegmentAtIndex:(NSUInteger) animated:(BOOL)
和
insertSegmentWithTitle:(NSString *) atIndex:(NSUInteger) animated:(BOOL)
要完全替换段,可以使用以下函数:
- (void)setSegments:(NSArray *)segments
{
[segmentController removeAllSegments];
for (NSString *segment in segments) {
[segmentController insertSegmentWithTitle:segment atIndex:segmentController.numberOfSegments animated:NO];
}
}
希望这可以帮助。
这里有一个小的Swift扩展,用新值的数组替换当前的segmentedControl
extension UISegmentedControl {
func replaceSegments(segments: Array<String>) {
self.removeAllSegments()
for segment in segments {
self.insertSegmentWithTitle(segment, atIndex: self.numberOfSegments, animated: false)
}
}
}
extension UISegmentedControl {
func replaceSegments(segments: Array<String>) {
self.removeAllSegments()
for segment in segments {
self.insertSegment(withTitle: segment, at: self.numberOfSegments, animated: false)
}
}
}
这是一个Swift扩展,用于用一系列字符串替换段。它与another answer类似,除了它可以与任何序列一起使用,这意味着你也可以传入切片,集合等。
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)
}
}
}
为了完整起见(因为我最终在这里寻找如何在xib中实现相同的东西),这里是如何在xib中做到这一点:
为我工作,UIsegmentedControll包含两个段,我想在索引2中添加一个,在swift 2.2中使用此代码使用:
SEG_TipoFiltro.insertSegmentWithTitle("Title", atIndex: 2, animated: false)