0
@interface MyClass {
  NSString *_myString;
}
@property (copy) *myString;
@end

@implementation MyClass
@synthesize myString = _myString;

- (void)awakeFromNib {
  self.myString = @"";
}

nib には、NSTextField と NSButton があります。テキスト フィールドの値バインディングは、myClass.myString に設定されます。テキスト フィールドにテキストを入力すると、変数 _myString が正しく更新されることを確認しました。

NSButton の Enabled バインディングは myClass.myString.length に設定されます。しかし、プログラムを起動すると、NSButton が有効になります。テキストフィールドに移動して何かを入力すると、ボタンは有効なままになります。次に、テキストフィールドからテキストを消去すると、ボタンが無効になります。

しかし、 awakeFromNib の呼び出しの後、ボタンが最初から無効にされないのはなぜですか? バインディングを反対方向 (myClass.myString --> NSTextField) に機能させるために追加の作業を行う必要がありますか? myString をプロパティとして宣言するとうまくいくと思いました。

4

1 に答える 1

0

何がこれを引き起こしているのかわかりませんが、テキストが空で始まるので、それを修正する最も簡単な方法awakeFromNibは次のようなことです[myButton setEnabled:false];

于 2013-07-26T22:28:32.357 に答える