2011-03-11 7 views

답변

77

selectedSegmentIndex 속성은 UISegmentedControl의 선택된 세그먼트를 식별합니다. 이 속성을 유효한 세그먼트 인덱스 또는 UISegmentedControlNoSegment (-1)으로 설정하여 현재 선택 항목을 해제합니다.

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

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

사용자가 다른 세그먼트를 선택합니다. – jmstone617

22

@jmstone 응답, 사실,이 작업이 컨트롤에 대한의 valueChanged 이벤트를 호출하지 않습니다.

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

이 호출합니다 : :

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

내 문제가 해결되었습니다. 감사합니다. – Tander

64

을 다른 방법으로, selectedSegmentIndex 통화 변경 한 후에 'sendActionsForControlEvents을'예를 들어,이 문제를 극복하기

한 가지 방법은 함수를 직접 호출하는 것입니다

segmentedControl.selectedSegmentIndex = 0 

[segmentedControl sendActionsForControlEvents:UIControlEventValueChanged]; 
+1

매력처럼 작동합니다! 감사합니다 – vampirewalk

+5

'sendActionsForControlEvents '가 없으면 세그먼트 만 변경되지만 이벤트는 트리거되지 않습니다. Swift에서는'segmentedControl.sendActionsForControlEvents (UIControlEvents.ValueChanged)'고마워요. – Steve

+0

가장 적절한 대답입니다. 실제로 이것은 표시되어야합니다. –

2

나는 세그먼트 화 된 컨트롤 바뀌지 마. "selectedSegmentIndex"등을 너무 일찍 호출했습니다. 일단 "viewDidLoad"가 호출 된 후에 호출하면 모든 것이 다시 잘됩니다. 스위프트에서

13

:

segmentedControl.selectedSegmentIndex = 1 

스위프트 2 :

segmentedControl.sendActionsForControlEvents(UIControlEvents.ValueChanged) 

스위프트 3 :

이 실제로 당신이 때를 위해 설정 한 어떤 대상/액션을 트리거하지 않습니다
segmentedControl.sendActions(for: UIControlEvents.valueChanged) 
+3

Swift 3 변형은 'segmentedControl.sendActions (for : .valueChanged)'로 단순화 할 수 있습니다. –

관련 문제