标签: cocoa-bindings

NSComboBox:如何告诉用户输入了不在弹出列表中的信息并读取它

我有一个NSComboBox与一个单独的类,符合NSComboBox dataSource和委托.

如果用户在组合框中键入的文本与弹出列表中的某个项目不匹配,我如何接收用户输入内容的通知并读取用户键入的值?

目前我正在恭维委托方法: -

-(void)comboBoxSelectionDidChange:(NSNotification *)notification 
-(void)comboBoxWillDismiss:(NSNotification *)notification 
Run Code Online (Sandbox Code Playgroud)

但是,只有在用户从弹出窗口中选择了一个项目时才会通知这些,而不是在用户在停止编辑中键入其他内容时

macos objective-c cocoa-bindings

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

更改Cocoa绑定中的空占位符?

有没有办法在Cocoa的绑定中更改(出于本地化的目的)空占位符?

绑定在Interface Builder中设置为弹出按钮.需要在IB中设置的绑定的双向性质,因此以编程方式执行它并不是真正吸引人的.

我知道处理笔尖文件的本地化的标准方式是通过使每种语言一个,但由于这是在语言版本之间的整个笔尖文件的唯一区别,似乎有点过分了一个字符串.

如果有办法修改在IB中创建的绑定,我正在考虑在文件的所有者的awakeFromNib方法中执行它.

cocoa interface-builder cocoa-bindings

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

绑定到用户默认值中的数组的@count

是否可以将 Control 绑定到存储在用户默认值中的数组的集合属性?

我试图(在 Xcode 4.3 的界面构建器中)将 Max Value 绑定到数组计数,如下所示:

最大值(共享用户默认值 Controller.values.MYArrayName.@count)
绑定到:共享用户默认值控制器
控制器键:
模型键路径: MYArrayName.@count

不幸的是,这根本没有影响(甚至没有任何错误)。

我可以将 Max Value 绑定到视图控制器中的 ivar,然后将其绑定到用户默认值中的值。例如

NSUInteger maxVal
...

NSUserDefaults* stdUD=[NSUserDefaults standardUserDefaults];
[self bind:@"maxVal" toObject:stdUD withKeyPath:@"MYArrayName.@count" options:nil];
Run Code Online (Sandbox Code Playgroud)

然后:

最大值(文件的所有者.maxVal)
绑定到:文件所有者
控制器密钥:
模型密钥路径: maxVal

但我希望不用额外的步骤就可以做到

xcode cocoa cocoa-bindings

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

NSPopUpButton + Bindings +显示所有选项

我正在尝试开发一个NSPopUpButton可以作为某个数据源的过滤器,让我们说一个NSArrayController填充表.

我可以将NSArrayController菜单中的菜单绑定到选择键路径,以便正确过滤数据,没问题.

棘手的部分是,我希望这个内容NSPopUpButton依赖于NSArrayController使用绑定,但我想添加一个"全部显示"菜单项,或者至少一些不是来自核心数据并且执行一些特殊的项目除了使用绑定和核心数据过滤表之外的其他操作.

我正在尝试执行类似NSPopUpButton过滤器栏中的finder 所使用的操作,菜单的最后一项执行特殊操作,而其他项只是过滤结果.

我理解这种方法是忘记绑定并以编程方式完成所有操作,因为我相信没有办法搞砸NSArrayController和绑定来添加不依赖于核心数据的自定义菜单项,但是因为我还没有在Apple Docs上发现了什么,在这里,我想分享我的想法......任何想法?

cocoa objective-c nsarraycontroller cocoa-bindings nspopupbutton

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

使用NSArrayController过滤单列NSTableView

我提出一张带有NSTableView(一列)NSSearchField和一张NSButton('添加')的表格.我想要的是将表视图的内容设置为字符串列表.此字符串列表位于被NSArray调用列表中.应根据搜索字段的内容(如果列表中的字符串)不包含搜索字段的内容来过滤此内容,而不再在表视图中显示该内容.

我不熟悉绑定,任何人都可以帮助我.

macos cocoa nstableview nsarraycontroller cocoa-bindings

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

将Cocoa NSComboBox值绑定到对象

假设我有一个NSObject代表一个国家的子类,例如

@interface CountryInfo : NSObject

@property (nonatomic, retain) NSString *countryName;
Run Code Online (Sandbox Code Playgroud)

我的模型包含NSMutableArrayCountryInfo秒.我想将数组绑定到NSComboBox.组合框应显示国家/地区名称,并允许用户选择国家/地区.

所以,我像这样设置我的.xib:

CountryArrayController(NSArrayController)

ContentArray

  • 绑定到:文件所有者 >模型关键路径:self.model.countries

NSComboBox

内容

  • 绑定到:CountryArrayController >控制键:arrangedObjects

内容价值

  • 绑定到:CountryArrayController >控制键:arrangedObjects >型号主要路径:国家名称

到现在为止还挺好.现在,如何绑定的价值NSComboBox?文件说明:

"An NSString or NSNumber that specifies the value of the NSComboBox."
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我注意到我可以将它绑定到NSString我的模型上,它将反映所选的countryName.但我想绑定到CountyInfo对象本身!无论是直接,还是通过绑定到我的阵列控制器上的选择:我该如何设置它?

cocoa binding nsarraycontroller cocoa-bindings nscombobox

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

基于视图的NSTableView + NSButton

我有一个基于视图的NSTableView,使用Cocoa Bindings来更改单元格中某些标签和图像的值.这一切都很棒.但是,我想在单元格中添加一个按钮.我有按钮工作,但它的动作方法只有按钮作为发送者,这意味着我不知道按钮所在的单元格的内容.不知何故,我需要在按钮上存储一些额外的数据 - 在至少是按钮所在的行索引.我将NSButton子类化并在单元格中使用了我的子类,但是Interface Builder不知道额外的属性,因此我无法绑定它.如果我想在代码中绑定它,我不知道将传递给它的对象或keypath的名称.

我怎样才能让它发挥作用?

macos cocoa nstableview cocoa-bindings

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

在Xcode Document App中:为什么要调用MyDocument的init方法两次?

我按照Hillegass的第8章在那里实施了RaiseMan应用程序.然后我决定按照相同的过程来实现我正在进行的Cocoa编程类中的练习代码,但是在构建和运行之后我收到了以下非常神秘的错误消息.

无法从类_NSControllerObjectProxy的对象<_NSControllerObjectProxy:0x100460e30>创建BOOL

我不知道这个错误信息的含义.进行谷歌搜索提出了一些点击,但他们的补救措施似乎是做我已经做的事情.

我盯着我在Interface Builder中做的所有连接和任务,没有任何看起来明显错误.

所以我进入调试器并在MyDocument类的init方法中设置断点,并且它被调用两次.怎么会发生这种情况?我应该寻找什么才能使init方法被调用两次?堆栈跟踪显示init由我们自己编写的系统函数调用.

为了比较,我回到了Hillegass第8章之后的项目,并在MyDocument类的init方法中设置了一个断点,并且它被调用一次(这是人们所期望的).

cocoa cocoa-bindings

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

在IB中没有使用绑定和共享NSUserDefaults保存数据的麻烦

我有一个奇怪的问题,我无法弄明白.我对Interface Builder有点不满意.我想要做的似乎应该是简单的,但由于某种原因它不起作用.

在界面构建器中,我有一个带有简单NSTextField的首选项窗口.我已使用控制器键"值"和模型键"test"将值绑定到共享用户默认值控制器.我构建/运行我的应用程序并打开首选项窗口,在所述文本字段中键入一些随机值,关闭窗口.Command-Q应用程序.然后在shell中为我的应用程序执行"defaults read com.xxx.yyy",无法找到密钥和值.话虽如此,似乎下次我启动应用程序并更改它的工作值,但前提是我在关闭窗口之前将焦点从NSTextField切换下来.

在NSUserDefaults的文档中,它说共享控制器立即保存值,我在这里错过了一些愚蠢的东西吗?

谢谢你的帮助.

xcode interface-builder nsuserdefaults cocoa-bindings

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

使用Cocoa Bindings将程序化文本字段值更改传播到模型

我尝试了一个非常简单的实现,如下所示:

@implementation ScrollingTextField
- (void)scrollWheel:(NSEvent *)event {
    self.doubleValue -= event.scrollingDeltaY;
}
@end
Run Code Online (Sandbox Code Playgroud)

value将滚动文本字段绑定到其他对象.滚动现在可以更新文本字段上的可见文本.但是,绑定值不会更改.

为什么绑定值不会改变?或者:如何使绑定值识别更改?

cocoa textbox subclass cocoa-bindings

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