2012-01-14 2 views
5

두 개의 viewcontrollers Viewcontroller 및 OptionsViewController가있는 앱이 있습니다. Viewcontroller 초기 viewcontroller 경우 다음 옵션 단추를 모달 segue 단추를 클릭합니다. 거기에 optionsviewcontroller 난 콘센트 (UnitsSegmentedControl)에 연결되어있는 스토리 보드에서 만든 viewcontroller UISegmented 및 OptionsViewController로드 할 때 기본적으로 세그먼트를 선택해야합니다 세그먼트 컨트롤을 말할 수 싶습니다. OptionsViewController 선택한 인덱스는 기본적으로 같은 0보기를로드 할 때UISegmentedControl의 기본 세그먼트 설정

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
OptionsViewController *ovc=[segue destinationViewController]; 
ovc.delegate=self; 
[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1]; 

건은 다음과 같습니다 내의 ViewController에서 나는 방법을 썼다. 나는 어떤 오류 메시지 나 어떤 것을 얻지 못한다. Xcode 4.2를 사용하고 있습니다. 나는 스토리 보드에서 UISegmentedControl이 기본 선택된 인덱스를 설정할 수 있도록 변경할 수있는 옵션이 될 것이라고 생각한다. 나는 그 밖의 무엇이 그것을 일으킬 수 있는지 모른다. 당신에게

편집 감사합니다

[ovc.UnitsSegmentedControl setSelectedSegmentIndex:1]; 

OptionsViewController 내부의 방법은 모든 것이 잘 작동의 viewDidLoad : 내가 작성하는 경우 있음을 알아 냈다. 나는 segue를위한 준비 방법에서 그것을 할 수없는 이유는 무엇입니까?

답변

4

분할 된 컨트롤은 OptionsViewController가로드 될 때까지 존재하지 않으므로 ViewController의 prepareForSegue 메서드에서 선택한 세그먼트를 설정할 수 없습니다. UISegmentedControl 클래스 참조를 검토하면 기본 상태를 설정할 수있는 방법이 없음을 알 수 있습니다.

"사용자가 세그먼트에 닿을 때까지 기본값은 UISegmentedControlNoSegment (선택된 세그먼트 없음)입니다.이 속성을 -1로 설정하면 현재 상태가 꺼집니다 UISegmentedControl은 컨트롤이 순간 모드에있을 때이 속성을 무시하고 사용자가 선택 영역을 변경하기 위해 세그먼트를 터치하면 UIControlEventValueChanged 컨트롤 이벤트가 생성되고 세그먼트 컨트롤이이 컨트롤 이벤트에 응답하도록 설정되어 있으면 액션 메시지를 표시합니다. "

OptionsViewController의 viewDidLoad 메서드에서 selectedSegmentIndex를 설정하는 것이 View Controller의 기본값을 설정하는 올바른 방법입니다. 프로그래밍

segmentControl.selectedSegmentIndex=-1; 

그것을 수행하려는 경우 당신이 인터페이스 빌더에서 다음 코코아 콩을 설정하려면

+0

인덱스의 선택 속성을 선택 취소이 코드를 사용 OptionsViewController에서 index라는 하나의 속성을 생성하고 그것을 prepareforsegue 메소드에서 직접 선택한 세그먼트 번호로 설정 한 다음 view의 segmentviewcontrol에 할당하여로드했습니다. 도와 줘서 고마워. – Mppl

3

그냥 그냥이 문제를 해결하는 방법을 발견

관련 문제