如何以UISegmentedControll
编程方式进行切换?
Answers:
所述selectedSegmentIndex属性标识一个UISegmentedControl的所选择的段。将此属性设置为任何有效的段索引,或将UISegmentedControlNoSegment(-1)设置为关闭当前选择。
// select the first segment
segmented.selectedSegmentIndex = 0;
// turn off the current selection
segmented.selectedSegmentIndex = UISegmentedControlNoSegment;
另外,例如,在更改selectedSegmentIndex之后,请调用“ sendActionsForControlEvents:”
segmentedControl.selectedSegmentIndex = 0
[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
sendActionsForControlEvents
,它将仅更改段,但不会触发事件。在Swift中,非常segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)
感谢。
在Swift中:
segmentedControl.selectedSegmentIndex = 1
斯威夫特2:
segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)
斯威夫特3:
segmentedControl.sendActions(for: UIControlEvents.valueChanged)
编辑:正如Yogesh Nikam Patil通知我的那样,UIControlEvents已从UIControlEvents重命名为UIControl.Event。我已经相应地更新了代码。
@arcady bob的答案是对我有用的一个。
我只是发布SWIFT 5的更新版本:
yourSegmentedControl.selectedSegmentIndex = 0
yourSegmentedControl.sendActions(for: UIControl.Event.valueChanged)
如果仅使用第一行,则分段将以图形方式做出相应的反应,但不会调用与分段控件关联的IBAction。简而言之:第二行就像点击分段控件。这就是我所需要的,我所缺少的。
我有一个类似的问题,即分段控件没有变化。我太早调用了“ selectedSegmentIndex”,等等。一旦我在调用“ viewDidLoad”之后调用它,一切就再好了。