繁体   English   中英

如何以编程方式切换 UISegmentedControl?

[英]How do I switch UISegmentedControl programmatically?

如何以编程方式切换UISegmentedControl

或者,在您更改 selectedSegmentIndex 调用“sendActionsForControlEvents:”之后,例如

segmentedControl.selectedSegmentIndex = 0

[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];

斯威夫特 5:

segmentedControl.selectedSegmentIndex = 0
segmentedControl.sendActions(for: .valueChanged)

selectedSegmentIndex属性标识 UISegmentedControl 的选定段。 将此属性设置为任何有效的段索引,或UISegmentedControlNoSegment (-1) 以关闭当前选择。

// select the first segment
segmented.selectedSegmentIndex = 0;

// turn off the current selection
segmented.selectedSegmentIndex = UISegmentedControlNoSegment;

在斯威夫特:

segmentedControl.selectedSegmentIndex = 1

斯威夫特 2:

segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)

斯威夫特 3:

segmentedControl.sendActions(for: UIControlEvents.valueChanged)

@jmstone 响应,是的,此操作不会为此控件调用 valueChanged 事件。

克服这个问题的一种方法是自己调用函数:

segmentedControl.selectedSegmentIndex = 3;
[self valueChangedMethod:segmentedControl];

这将调用:

- (void)valueChangedMethod:(UISegmentedControl *)segmentedControl
{
    //continue your code here...
}

编辑:正如 Yogesh Nikam Patil 让我注意到的,UIControlEvents 已从 UIControlEvents 重命名为 UIControl.Event。 我已经相应地更新了我的代码。

@arcady bob 答案是为我解决问题的答案。

我刚刚发布了SWIFT 5的更新版本:

yourSegmentedControl.selectedSegmentIndex = 0
yourSegmentedControl.sendActions(for: UIControl.Event.valueChanged)

如果您只使用第一行,则分段控件将以图形方式做出相应的反应,但不会调用与分段控件关联的 IBAction。 简而言之:第二行就像点击分段控件。 这是我需要的,也是我所缺少的。

我有一个类似的问题,分段控件没有改变。 我过早地调用“selectedSegmentIndex”等。 一旦我在调用“viewDidLoad”之后调用它,那么一切都很好了。

首先,从您从 UI 添加的分段控件创建一个插座

@IBOutlet 弱变量 segmentedControl:UISegmentedControl! 使用下面的代码以编程方式更改选定的段

segmentedControl.selectedSegmentIndex = 1 // 索引

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM