簡體   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