2011-01-25 3 views
2

도움을 주셔서 감사합니다.NSUserDefaults, 세 가지 옵션이있는 하나의 환경

세 가지 옵션이있는 환경 설정에 어려움을 겪고 있습니다. 보다 구체적으로, 선호를 제어하는 ​​세 개의 체크 박스의 bool 상태 사이의 관계. 단일 체크 박스 환경 설정을 설정하는 것이 좋으며,이 세 가지 옵션 버전의 개별 환경 설정이 모두 작동합니다. 그러나 나는 일관되게 상호 작용하는 확인란을 얻는 것처럼 보일 수 없다. 그래서 하나 켜고, 두 가지 등.

이것은 내 코드입니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

감사합니다.

- (BOOL)displayBankOne 


{ 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
return [defaults boolForKey:PREFdisplayBankOne]; 

} 

- (IBAction)bankOne:(id)sender 

{ 


NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setBool:displayBankOne forKey:PREFdisplayBankOne]; 

[defaults setBool:displayBankOne forKey:PREFdisplayBankOne]; 
[defaults setBool:displayBankTwo forKey:PREFdisplayBankTwo]; 
[defaults setBool:displayBankThree forKey:PREFdisplayBankThree]; 

[bankOneFlag setState:NSOnState]; 

[bankTwoFlag setState:NSOffState]; 
[bankThreeFlag setState:NSOffState]; 

}

답변

1

내가 바로 당신을 이해한다면, 당신은 라디오 그룹 (을 NSMatrix)를 사용하여 시도 할 수 있습니다. 3 개의 개별 확인란 대신. IB의 바인딩을 사용하여 값 선택을 공유 사용자 기본값에 바인딩하십시오.

IB 바인딩 (매트릭스 바인딩)에서 에 바인딩 : 공유 사용자 기본값 컨트롤러. 그리고 모델 키 경로에 이름을 입력하십시오.

아이디어를 제공하십시오. 다른 개체를 동일한 모델 키 경로 이름에 바인딩 할 수도 있습니다. 예 : IB에 라벨 (NSTextField)을 추가하고 해당 값을 공유 사용자 기본값 컨트롤러에 바인딩 할 수 있습니다. 모델 키 경로라디오 그룹의 모델 키 경로에 이름을 지정한 것과 같은 이름으로 설정하십시오.

실행하면 레이블에 라디오 버튼이 켜져있는 색인 번호가 표시됩니다.

+0

감사합니다. 그게 정말 잘됐다. 훨씬 호소력이있다. – Paul

+0

아무런 문제가 없습니다. 답변을 수락 할 수 있습니까 :-) – markhunte

관련 문제