我有一个NSComboBox与一个单独的类,符合NSComboBox dataSource和委托.
如果用户在组合框中键入的文本与弹出列表中的某个项目不匹配,我如何接收用户输入内容的通知并读取用户键入的值?
目前我正在恭维委托方法: -
-(void)comboBoxSelectionDidChange:(NSNotification *)notification
-(void)comboBoxWillDismiss:(NSNotification *)notification
Run Code Online (Sandbox Code Playgroud)
但是,只有在用户从弹出窗口中选择了一个项目时才会通知这些,而不是在用户在停止编辑中键入其他内容时
有没有办法在Cocoa的绑定中更改(出于本地化的目的)空占位符?
绑定在Interface Builder中设置为弹出按钮.需要在IB中设置的绑定的双向性质,因此以编程方式执行它并不是真正吸引人的.
我知道处理笔尖文件的本地化的标准方式是通过使每种语言一个,但由于这是在语言版本之间的整个笔尖文件的唯一区别,似乎有点过分了一个字符串.
如果有办法修改在IB中创建的绑定,我正在考虑在文件的所有者的awakeFromNib方法中执行它.
是否可以将 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
但我希望不用额外的步骤就可以做到
我正在尝试开发一个NSPopUpButton可以作为某个数据源的过滤器,让我们说一个NSArrayController填充表.
我可以将NSArrayController菜单中的菜单绑定到选择键路径,以便正确过滤数据,没问题.
棘手的部分是,我希望这个内容NSPopUpButton依赖于NSArrayController使用绑定,但我想添加一个"全部显示"菜单项,或者至少一些不是来自核心数据并且执行一些特殊的项目除了使用绑定和核心数据过滤表之外的其他操作.
我正在尝试执行类似NSPopUpButton过滤器栏中的finder 所使用的操作,菜单的最后一项执行特殊操作,而其他项只是过滤结果.
我理解这种方法是忘记绑定并以编程方式完成所有操作,因为我相信没有办法搞砸NSArrayController和绑定来添加不依赖于核心数据的自定义菜单项,但是因为我还没有在Apple Docs上发现了什么,在这里,我想分享我的想法......任何想法?
cocoa objective-c nsarraycontroller cocoa-bindings nspopupbutton
我提出一张带有NSTableView(一列)NSSearchField和一张NSButton('添加')的表格.我想要的是将表视图的内容设置为字符串列表.此字符串列表位于被NSArray调用列表中.应根据搜索字段的内容(如果列表中的字符串)不包含搜索字段的内容来过滤此内容,而不再在表视图中显示该内容.
我不熟悉绑定,任何人都可以帮助我.
假设我有一个NSObject代表一个国家的子类,例如
@interface CountryInfo : NSObject
@property (nonatomic, retain) NSString *countryName;
Run Code Online (Sandbox Code Playgroud)
我的模型包含NSMutableArray的CountryInfo秒.我想将数组绑定到NSComboBox.组合框应显示国家/地区名称,并允许用户选择国家/地区.
所以,我像这样设置我的.xib:
CountryArrayController(NSArrayController)
ContentArray
NSComboBox
内容
内容价值
到现在为止还挺好.现在,如何绑定的价值的NSComboBox?文件说明:
"An NSString or NSNumber that specifies the value of the NSComboBox."
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我注意到我可以将它绑定到NSString我的模型上,它将反映所选的countryName.但我想绑定到CountyInfo对象本身!无论是直接,还是通过绑定到我的阵列控制器上的选择:我该如何设置它?
我有一个基于视图的NSTableView,使用Cocoa Bindings来更改单元格中某些标签和图像的值.这一切都很棒.但是,我想在单元格中添加一个按钮.我有按钮工作,但它的动作方法只有按钮作为发送者,这意味着我不知道按钮所在的单元格的内容.不知何故,我需要在按钮上存储一些额外的数据 - 在至少是按钮所在的行索引.我将NSButton子类化并在单元格中使用了我的子类,但是Interface Builder不知道额外的属性,因此我无法绑定它.如果我想在代码中绑定它,我不知道将传递给它的对象或keypath的名称.
我怎样才能让它发挥作用?
我按照Hillegass的第8章在那里实施了RaiseMan应用程序.然后我决定按照相同的过程来实现我正在进行的Cocoa编程类中的练习代码,但是在构建和运行之后我收到了以下非常神秘的错误消息.
无法从类_NSControllerObjectProxy的对象<_NSControllerObjectProxy:0x100460e30>创建BOOL
我不知道这个错误信息的含义.进行谷歌搜索提出了一些点击,但他们的补救措施似乎是做我已经做的事情.
我盯着我在Interface Builder中做的所有连接和任务,没有任何看起来明显错误.
所以我进入调试器并在MyDocument类的init方法中设置断点,并且它被调用两次.怎么会发生这种情况?我应该寻找什么才能使init方法被调用两次?堆栈跟踪显示init由我们自己编写的系统函数调用.
为了比较,我回到了Hillegass第8章之后的项目,并在MyDocument类的init方法中设置了一个断点,并且它被调用一次(这是人们所期望的).
我有一个奇怪的问题,我无法弄明白.我对Interface Builder有点不满意.我想要做的似乎应该是简单的,但由于某种原因它不起作用.
在界面构建器中,我有一个带有简单NSTextField的首选项窗口.我已使用控制器键"值"和模型键"test"将值绑定到共享用户默认值控制器.我构建/运行我的应用程序并打开首选项窗口,在所述文本字段中键入一些随机值,关闭窗口.Command-Q应用程序.然后在shell中为我的应用程序执行"defaults read com.xxx.yyy",无法找到密钥和值.话虽如此,似乎下次我启动应用程序并更改它的工作值,但前提是我在关闭窗口之前将焦点从NSTextField切换下来.
在NSUserDefaults的文档中,它说共享控制器立即保存值,我在这里错过了一些愚蠢的东西吗?
谢谢你的帮助.
我尝试了一个非常简单的实现,如下所示:
@implementation ScrollingTextField
- (void)scrollWheel:(NSEvent *)event {
self.doubleValue -= event.scrollingDeltaY;
}
@end
Run Code Online (Sandbox Code Playgroud)
我value将滚动文本字段绑定到其他对象.滚动现在可以更新文本字段上的可见文本.但是,绑定值不会更改.
为什么绑定值不会改变?或者:如何使绑定值识别更改?
cocoa-bindings ×10
cocoa ×8
macos ×3
nstableview ×2
objective-c ×2
xcode ×2
binding ×1
nscombobox ×1
subclass ×1
textbox ×1