2012-10-16 2 views
1

등록 된 기본값을 표시하기 위해 NSUserDefault 키에 바인딩 된 NSMenuItem을 실행하려면 어떤 순서로 실행해야합니까?NSUserDefault 등록 된 기본값 NSMenuItem 바인딩의 초기 표시

기본값을 등록하려고하는데 내 NSMenuItems가 앱을 시작할 때 내가 등록한 기본값으로 나타나지 않습니다.

+0

은 엑스 코드와 * * 태그 데없는이 질문 주셔서 감사합니다! +1. –

+0

5 개월 동안 SO를 사용해 왔지만 최근까지 참여하지 못했습니다. 그래서 나도 알아 냈습니다. –

+0

당신은 아마 C++과 Objective-C 컴파일러와 Xcode를 혼동스럽게 만드는 초보자 인 것 같은데 ... ;-) –

답변

1

아침에 대부분을 쫓아 다니며 대부분의 답변이 단편적인 것처럼 보였으므로 공유 할 것이라고 생각했습니다.

1)에 메뉴 항목을 바인딩 :

  • 공유 사용자 기본값
  • 컨트롤러 키 :
  • 모델 키 경로 값 : 키 이름을 (이 경우 Deduplication_Target)에

2) awakeFromNib가 호출되기 전에 기본값을 등록하십시오. AppDelegate의 + (void) 메소드에서 초기화했습니다.

NSString *const KEY_DEDUPLICATION_TARGET = @"Deduplication_Target"; 
NSString *const KEY_DEDUPLICATION_SOURCE = @"Deduplication_Source"; 
+ (void)setupDefaults {  
    NSDictionary* userDefaultsValuesDict = [NSDictionary dictionaryWithObjectsAndKeys: 
              [NSNumber numberWithBool:YES], KEY_DEDUPLICATION_TARGET, 
              [NSNumber numberWithBool:YES], KEY_DEDUPLICATION_SOURCE, 
              nil]; 

    // set them in the standard user defaults 
    [[NSUserDefaults standardUserDefaults] registerDefaults:userDefaultsValuesDict]; 
} 
: 그들 NSStrings로 초기화 보여 거기에 예에도 불구하고, BOOL 값에 대한 NSNumbers으로 사전을 사용자의 기본 설정을 초기화)

+ (void)initialize { 
    [self setupDefaults]; 
} 

3 (아래 applicationDidFinishLaunching은 (ID) 초기화, applicationWillFinishLaunching,이 중 어느 것도 작동하지 않음)

그것으로 해결되었습니다. 참고로

: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaBindings/Concepts/NSUserDefaultsController.html