我在我的app delegate中创建了一个bool类型的属性:
在AppDelegate.h中:
@property(assign) BOOL myProp;
AppDelegate.m中的:
@synthesize myProp;
然后在XIB文件中,我打开了一个按钮的Enabled-property的绑定编辑器。 我已启用绑定并将其设置为“App Delegate”。对于我选择的模型关键路径:
self.myProp
当我运行应用程序并切换我的属性的值时,没有任何反应。该按钮不会更改其启用状态。为什么呢?
答案 0 :(得分:2)
当您分配给酒店时,是通过self.myProp = foo
还是myProp = foo
进行的?后者使用直接ivar访问,绕过KVO(键值观察,Bindings的基础组件)。你可以manually trigger KVO notifications,但更好的选择几乎总是通过setter方法分配(作为self。)并隐式得到automatic change notification。
请注意,为了让它生成一个setter,您需要私下将您的属性重新声明为readwrite,您可以使用class extension来执行此操作。
答案 1 :(得分:1)
首先它应该被声明为BOOL,其次你已经将它声明为readonly(如果你想要更改你必须删除的值)
要设置BOOL,请使用self.myProp = YES/NO;
答案 2 :(得分:1)
我试图以这种方式解决这个问题
在AppDelegate.h中
@property (assign)BOOL myProp;
- (IBAction)onOff:(id)sender; //to switch the value of myProp
在AppDelegate.m中
@synthesize myProp;
- (id)init{
self = [super init];
if (self) {
myProp=NO;
}
return self;
}
- (IBAction)onOff:(id)sender {
NSLog(@"before myProp=%d",myProp);
self.myProp=!myProp;
NSLog(@"after myProp=%d",myProp);
}
目标按钮的已启用设置为App Delegate。
模型关键路径设置为self.myProp
它完成了!!!