-->

UISegmentedControl更改段的数目编程(UISegmentedControl chan

2019-06-26 12:49发布

我在一个叫SegmentedAnswer,有四个部分观点已经一个UISegmentedControl。 有没有办法改变的段数编程? 非常感谢!

Answer 1:

是的,你可以使用

removeSegmentAtIndex:(NSUInteger) animated:(BOOL)

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


Answer 2:

要完全替代部分,你可以使用以下功能:

- (void)setSegments:(NSArray *)segments
{
    [segmentController removeAllSegments];

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

希望这可以帮助。



Answer 3:

而且这里有一个小雨燕扩展使用新值的阵列,以取代目前的segmentedControl

斯威夫特3

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

斯威夫特4

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


Answer 4:

这里是一个夫特延伸用于与字符串的序列替代区段。 它类似于另一个答案在这里,不同之处它可以与任何顺序使用,这意味着你还可以传递片,套等

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


Answer 5:

为了完整的缘故(因为我在这里结束了寻找如何实现在厦门国际银行同样的事情)这里是如何做到这一点在厦门国际银行:



Answer 6:

工作对我来说,UIsegmentedControll包含两个部分,我想迅速使用2.2添加一个索引2,使用此代码:

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


文章来源: UISegmentedControl change number of segments programmatically