web-dev-qa-db-ja.com

UIsegmentedControllをプログラムで切り替えるにはどうすればよいですか?

UISegmentedControllをプログラムで切り替えるにはどうすればよいですか?

59
Voloda2

selectedSegmentIndex プロパティは、UISegmentedControlの選択されたセグメントを識別します。このプロパティを有効なセグメントインデックスに設定するか、 ISegmentedControlNoSegment (-1)を選択して現在の選択をオフにします。

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

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

あるいは、たとえばselectedSegmentIndex呼び出しを変更した後、「sendActionsForControlEvents:」を呼び出します。

segmentedControl.selectedSegmentIndex = 0

[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged];
85
arcady bob

@jmstone応答、true、このアクションはこのコントロールのvalueChangedイベントを呼び出しません。

これを克服する1つの方法は、関数を自分で呼び出すことです。

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

これは呼び出します:

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

Swiftの場合:

segmentedControl.selectedSegmentIndex = 1

スイフト2:

segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged)

スウィフト3:

segmentedControl.sendActions(for: UIControlEvents.valueChanged)
23

セグメント化されたコントロールが変更されていない場合、同様の問題が発生しました。 「selectedSegmentIndex」などを早めに呼び出していました。 「viewDidLoad」が呼び出された後に私がそれを呼び出すと、すべてが再び大丈夫でした。

2
Daniel Ryan