如何以编程方式设置UISegmentedControl中段的选定状态

6
我有一个UISegmentedControl,其中包含四个部分。如果用户选择了第一个部分,则我正在尝试以编程方式同时设置第三个和第四个部分的选定状态。
例如:在给定的分段控件中,如果用户选择了部分A,则应选择C、D。
我查看了苹果的方法,但没有找到符合我的要求的方法。我正在寻找一种类似于以下方法的方法-
任何关于此的帮助都将不胜感激。
-(void) setSelected: (BOOL) selected forSegmentAtIndex: (NSUInteger) segment
参数
enabled
选择指定的部分为YES或取消选择部分为NO。默认情况下,部分未被选择。
segment
标识控件中部分的索引号。它必须是0到部分数(numberOfSegments)减1之间的数字;超过此上限范围的值将被固定在其上。
7个回答

14

Swift 4.0

segmentedControl.selectedSegmentIndex = index

7

使用setSelectedSegmentIndex的方法如下 -

[mySegmentControl setSelectedSegmentIndex:index]

嗨-我一开始尝试了这个,但是setSelectedSegmentIndex:消息一次只能选择一个段。如果用户选择a段,我想同时选择c、d段。 - Revanth
@Revanth - 你所选的控件并不适合你的需求。建议你考虑自己构建一个符合你需求的控件。 - indyfromoz

4

这段代码适用于Swift 2.0

// Declare outlet for our segmented control
@IBOutlet weak var segmentcontroll: UISegmentedControl!

// Declare our IBAction for the segmented control
@IBAction func segmentneeded(sender: AnyObject) {

    // Here we test for the presently selected segment
    switch segmentcontroll.selectedSegmentIndex {
    case 0:
        self.view.backgroundColor=UIColor.purpleColor()
        segmentcontroll.selectedSegmentIndex=UISegmentedControlNoSegment
    case 1:
        self.view.backgroundColor=UIColor.yellowColor()
        segmentcontroll.selectedSegmentIndex=UISegmentedControlNoSegment
    default:
        self.view.backgroundColor=UIColor.grayColor()
        segmentcontroll.selectedSegmentIndex=UISegmentedControlNoSegment
    }
}

2

首先,从您从UI中添加的分段控件创建一个出口。

@IBOutlet weak var segmentedControl: UISegmentedControl!

使用以下代码可以通过编程方式更改所选段的状态:
segmentedControl.selectedSegmentIndex = 1 // index

2

UISegmentedControl 类似于一组单选按钮,即一次只能选择一个分段。如果想要实现自定义的功能,您需要创建一个外观类似于 UISegmentedControl 的自定义控件。


谢谢。我可以把一些按钮组合在一起,看起来就像 UISegmentedControl,并添加我正在寻找的定制功能。 - Revanth

0

0

在SegmentControl中无法以编程方式完成此操作,但可以通过以下方式实现: 您可以创建一个imageView,在其中放置四个大小相等的按钮,使它们透明。当按下一个按钮时,更改imageView的图像,看起来像是按下了Segment C、D,这样您就可以完成其他任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接