UISegmentedControl以编程方式更改段数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UISegmentedControl以编程方式更改段数相关的知识,希望对你有一定的参考价值。

我在名为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

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)
        }
    }
}
另一答案

这是一个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)

以上是关于UISegmentedControl以编程方式更改段数的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift上以编程方式更改uisegmentedcontrol的字体大小和字体名称?

更改黑色 UISegmentedControl 上的 selectedSegment 背景颜色

UISegmentedControl:以编程方式设置索引?

如何以编程方式将 UISegmentedControl 添加到容器视图

以编程方式在 UINavigationBar 下方的 UIToolbar 中添加 UISegmentedControl

在带有 XIB 的视图控制器上以编程方式初始化 UISegmentedControl