私はこのためにSOOOですが、別の方法を考え出し、アプリでテストしました。それはうまくいくので、私は将来この問題を見つける人のために共有しようと思っています。
基本的にはあなたが何をしたいかは、あなたのコントローラに対応する値のないプロパティを作成することです
@property (readonly) BOOL enableProperty;
これがヘッダファイルで定義された
BOOL enableProperty;
が実際にいない、または任意の場所にあることを意味
それを合成するのではなく、自分のゲッターを書いて、あなたの状態を入れてください。
- (BOOL) enableProperty{
return (condition);
}
第3ステップ:いつでもあなたの状態が変化する可能性があることを通知します。
- (void) someMethod{
//.... Some code
[self willChangeValueForKey:@"enableProperty"];
[Thisline mightChange:theCondition];
[self didChangeValueForKey:@"enableProperty"];
//.... Some other code
}
第4ステップ:IBでは、コントロールのenabledプロパティをこの「偽」プロパティにバインドします。
お楽しみください! ;)
フランシスは、これは非常にいいです、直接使用することができ、非常によく文書化されています。それは私にとってはあまりギリシャ語ではありませんが、あなたが今私のためにしたコーディングを避けることを望んでいました;)誰も次の3日間で宣言的な解決策を思い出さなければ、答えとしてマークします。どうもありがとう! –