2

NSUserDefault キーにバインドされた NSMenuItem が登録済みのデフォルト値を表示するために実行する必要がある操作の順序は何ですか?

デフォルト値を登録していますが、アプリを起動したときに登録したデフォルト値で NSMenuItems が表示されません。

4

1 に答える 1

2

私は朝のほとんどをこれを追跡することに費やしましたが、そこにある答えのほとんどは断片的であるように思われるので、共有したいと思いました.

1) メニュー項目を次のようにバインドします。

  • 共有ユーザーのデフォルト
  • コントローラ キー:値
  • モデル キー パス:keyName (この場合は Deduplication_Target)

2) awakeFromNib が呼び出される前にデフォルトを登録します。AppDelegate の + (void)initialize メソッドで行いました。(applicationDidFinishLaunching、(id)init、applicationWillFinishLaunching、これらのいずれも機能しませんでした)

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

3) BOOL 値の NSNumbers を使用してデフォルト ディクショナリを初期化します。

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];
}

それは私のためにそれを解決しました。

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

于 2012-10-18T17:39:39.153 に答える