标签: cocoa-bindings

使用nil minValue将NSSlider绑定到NSTextField?

我有一个绑定到文本字段的NSSlider来显示滑块给出的值.一切正常,但我希望NSSlider将"nil"作为minValue发送给对象.

例如,我可以在保存(到属性列表)时将其转换为nil:

if ([myOb intValue] > 0)
    [myDict setObject:... forKey:...]
Run Code Online (Sandbox Code Playgroud)

但是我想在应用程序运行时应用相同的行为,只有当"myObj"的值为nil时才会启用其他字段(带绑定).问题是NSSlider总是返回"0",并且NSSlider不接受minValue = nil.

罗纳,提前谢谢.

cocoa objective-c slider interface-builder cocoa-bindings

1
推荐指数
1
解决办法
1741
查看次数

Cocoa绑定 - 尝试将NSMenuItem的状态绑定到我的自定义BOOL

在我的mac应用程序中,[Model m]是一个具有合成BOOL属性和ivar rollAnimations的自定义对象.animationsItem是一个NSMenuItem对象.我想将我的animationsItem的状态绑定到rollAnimations属性和[Model m]的ivar.双向绑定将是理想的(因此更改任一属性会改变另一个),但如果这很麻烦(保留周期等),我将解决单向绑定,这样更改菜单项会更改rollAnimations属性.

这是一段代码片段.它不起作用.我错过了什么?

NSMutableDictionary *bindingOptions = [NSMutableDictionary dictionary];
NSNumber *yesNumber = [NSNumber numberWithBool:YES];
[bindingOptions setObject:yesNumber forKey:NSValidatesImmediatelyBindingOption];
[animationsItem bind:@"state" toObject:[Model m] withKeyPath:@"rollAnimations" options:bindingOptions];
Run Code Online (Sandbox Code Playgroud)

macos cocoa cocoa-bindings nsmenuitem

1
推荐指数
1
解决办法
1456
查看次数

KVC获取NSDictionary中的条目

我有一个NSDictionary字符串映射到数字,其中包含要在UI中编辑的对象的属性,例如

  • Length : 1
  • Height : 2

现在试图在UI绑定文本字段使用的项目在字典中的关键的关键路径在字典中的条目失败很惨,所以试图用字典中的简单访问条目valueForKey:

NSLog(@"KVC: %@", [self valueForKey:@"keysAndValues"]);
Run Code Online (Sandbox Code Playgroud)

- >好的,转储显示Length存储在字典中.

NSLog(@"KVC: %@", [self valueForKey:@"keysAndValues.Length"]);
Run Code Online (Sandbox Code Playgroud)

[<YourClass 0x114608de0> valueForUndefinedKey:]:
此类与key keysAndValues.Length不符合键值编码.

有关如何使用非常通用的模型设置UI绑定的任何建议,其中包含存储在字典中的所有内容吗?我很确定我已经读过KVC/KVO,其中包含访问字典中单个条目的路径实际上有效 - 但是找不到主题了...

cocoa objective-c key-value-coding cocoa-bindings

1
推荐指数
1
解决办法
629
查看次数

在编辑了具有内容绑定的NSTableView之后,实体模式下的NSArrayController未更新

我有一个配置了模式'Entity'的NSArrayController,它包含所选类型为'Person'和'Prepares Content'的Core-Data-Entities.所有其他属性都是默认属性.正如所料,当我创建新的Person-entities时(通过按钮单击),此arraycontroller更新其arrangeObjects:

-(IBAction)addEntity:(id)sender{
  Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
                           inManagedObjectContext:[self managedObjectContext]];
  new.text = @"text";
  new.date = [NSDate date];
}
Run Code Online (Sandbox Code Playgroud)

我已将基于视图的NSTableView的内容绑定到此arrayController的'arrangeObjects'属性,以显示Persons.在一列中,我有一个可编辑的(但默认情况下是默认的)NSTextField绑定到TableCellView的'objectValue.text'属性.

如果我编辑表格中的"文本"属性并添加另一个人(当表格单元格仍处于编辑模式时),则表格失去焦点,编辑结束并且新人员显示在表格中.一切都很好看.

但是,如果我想添加另一个人,arrayController不会更新arrangeObjects属性(我发现不再调用arrayController的setContent:).

这是预期的行为吗?

macos core-data nstableview nsarraycontroller cocoa-bindings

1
推荐指数
1
解决办法
1315
查看次数

NSArrayController+cocoa 绑定+核心数据:在应用程序启动时获取选定的行

我正在使用可可绑定、NSArrayController 和核心数据。启动后,应用程序必须获取第一项,我在 applicationDidFinishLaunching 中尝试此操作:

1. Entity *ent = arrayManager.arrangedObjects[0];

2. Entity *ent = arrayManager.selectedObjects[0];
Run Code Online (Sandbox Code Playgroud)

---> 错误说数组为空。为什么 ?

我不明白的另一件事是,当应用程序出现时,在 tableView 中有一个选定的行,但是当我记录时:

NSLog(@"selected row in applicationDidFinishLaunching = %li",self.TableViewController.tableView.selectedRow);
Run Code Online (Sandbox Code Playgroud)

log: -1--> 没有选择行!为什么 ?

macos nsarraycontroller cocoa-bindings

1
推荐指数
1
解决办法
561
查看次数

为什么要绑定NSProgressIndicator的值?

将NSProgressIndicator的值绑定到控制器有什么意义?除了在启动时,似乎从未向控制器询问该值.移动NSProgressIndicator的唯一方法似乎是通过发送#increaseBy:来绕过我的绑定.那么,为什么我会绑定?!

cocoa cocoa-bindings

0
推荐指数
1
解决办法
533
查看次数

以编程方式将新记录添加到Cocoa Core数据实体

我正在Cocoa中创建一个简单的基于文档的应用程序.此应用程序的每个文档基本上应该管理日期和注释的数组,因此每个记录都是日期和注释(textview).每个文档也受密码保护.

为此,我创建了一个名为HistoryElement的Core Data实体(包含日期和notes属性),我还创建了一个Settings实体,该实体应该只包含一个包含打开文件密码的记录(我没有找到更好的方法,有一个?密码绑定到每个文件,所以我不能使用首选项,因为它不是一个全局应用程序密码).

我有一个首选项选项卡,其中包含一个密码文本字段,该文本字段绑定到Settings实体的密码属性.

好的...现在的问题是:当我创建一个新文档时,Settings实体上没有记录,所以我希望以编程方式添加一个,这样用户就可以放入(如果要保护它的文件)密码密码文本字段.

相反,如果我打开现有文件,它应该发现已经添加了Settings实体的记录,并且它不应该再创建它,而是密码文本字段应该使用这个.

我尝试了很多方法,但我无法做到这一点.我试过这个例子:

if([[settingsArrayController arrangedObjects] count] == 0) {`

    NSLog(@"Init settings");`

    [settingsArrayController add:self];`

} 
Run Code Online (Sandbox Code Playgroud)

它似乎在我创建新文档时添加了一条新记录,但如果我在密码文本字段中输入密码然后保存文档,当我再次打开文档时[[settingsArrayController arrangedObjects] count]返回0并再次创建新记录...

我怎样才能做到这一点 ?有一个更好/简单/优雅的方式来保护密码的文件?

macos cocoa core-data objective-c cocoa-bindings

0
推荐指数
1
解决办法
2775
查看次数