我仍然是Cocoa Bindings的新手,即使在查看了文档后我也没有找到这个问题的答案。我想要做的是有一个只有两个段的分段控件。如果选择了第一个段,则NSUserDefaults中的首选项应为YES,但如果选择了第二个段,则首选项应为NO。通过代码可以做到这一点很简单:
-(IBAction)segmentSelectionChanged:(id)sender {
NSInteger selectedSegment = [sender selectedSegment];
[[NSUserDefaults standardUserDefaults] setBool:(selectedSegment==0)?YES:NO forKey:@"somepref"];
}
但我想通过绑定来做到这一点(所选索引看起来很有希望)。有办法做这样的事吗?谢谢!
答案 0 :(得分:1)
我认为你已经拥有它 - 在IB中绑定控件的selectedIndex
:
Bind To: Shared User Defaults Controller Controller Key: values Key Path: WhateverYouWant
似乎工作正常。
您真正的问题是否需要BOOL
?无论如何,typedef
只是signed char
。见objc.h,第43,49和50行:
typedef signed char BOOL;
// ...
#define YES (BOOL)1
#define NO (BOOL)0
您可以使用integerForKey:
将值拉回并投出(可能更好,因为更明确):
(BOOL)[[NSUserDefaults sharedUserDefaults] integerForKey:@"WhateverYouWant"];
或者继续使用boolForKey:
,它应该可以正常工作。