我如何以编程方式切换 UISegmentedControl
?
或者,在您更改了selectedSegmentIndex之后,调用“sendActionsForControlEvents:”
segmentedControl.selectedSegmentIndex = 0
[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
SWIFT 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;
在Swift中:
segmentedControl.selectedSegmentIndex = 1
快捷 2:
segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)
Swift 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)
我曾遇到过类似的问题,即分段控件未能改变。
我之前调用了“selectedSegmentIndex”等方法,但时间点过早。一旦在“viewDidLoad”调用后再次调用它们,一切都恢复正常了。
sendActionsForControlEvents
,它只会改变分段控制器的选项卡但不会触发事件。在Swift中,使用segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)
。谢谢。 - Stephen