2011-07-04 16 views
0

私はこのようなAppDelegate持っている:私は後でAppDelegate内のいくつかのリアルタイムの計算にboundValueを使用しますコードレスのAppDelegateとUserDefaultsを一緒にバインドすることは可能ですか?

@interface AppDelegate : NSObject <NSApplicationDelegate> { 
    NSString *boundValue; 
} 
@property (nonatomic, retain) NSString *boundValue; 

@end 

を。メインの.xibにはまた、NSTextFieldコントロールがあります。

ここでNSTextFieldUserDefaults.boundValueの両方のキーをAppDelegate.boundValueにバインドします。もちろん、私は最小限のコードを書くだけでそれをしたいと思います。

NSTextFieldAppDelegateまたはUserDefaultsにバインドする方法を発見しました。しかし、どうすればAppDelegateUserDefaultsにバインドできますか?追加のコード行なしでこれらの3つの要素(コントロール+デリゲート+デフォルト)を結ぶ方法

答えて

0

あなたは余分なコードを少し必要がありますそれらの緑と青のキューブでmain.xibで表現されているコースappDelegateとuserDefaultsの提供、あなたが望むように今、あなたはIBで接続できる

@property (nonatomic, retain) IBOutlet NSString *boundValue; 

を。

編集: はここで結合ユーザーの好みにかなり素敵なチュートリアルです:Binding your preferences in Cocoa

+0

何も変更されていない...私AppDelegateとSharedUserDefaultsControllerのためのバインディングインスペクタでは何もありません。 AppDelegateをUserDefaultsにバインドする方法をいくつか教えてください(またはその逆)。 –

+0

私はAppDelegateのObjectControllerを追加しようとしましたが、それも私を助けませんでした...(私はAppDelegateが@propertyの場合に既にバインディングの苦情を受けているので、ObjectControllerは完全に不要です) –

+0

Whoa、slow down、do notパニック。はい、プロパティはバインディングに準拠していますが、IBOutletキーワードはコンセントがIBに表示されるようにします。私がオブジェクトコントローラを言及した唯一の理由は、誤って削除した可能性があるということです。デフォルトでは、appDelegateはすでにオブジェクトコントローラ(青いキューブ)によって表されています。 IBでそのキューブを選択し、情報ウィンドウのConnectionsセクションを見てください:boundValueはアウトレットとして表示されます。これで、appDelegateとuserDefaultsを表すキューブ間をCtrlキーを押しながらドラッグできます。それがすべてです。 –

関連する問題