问题标签 [nspopupbutton]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2240 浏览

objective-c - 添加“未选择”选项以绑定 NSPopupButton

我有一个绑定到支持核心数据的 NSArrayController 的 NSPopupButton。NSPopupButton 的选择也绑定到一个核心数据支持项。绑定大致如下:

selectedObject 上有一个方法,该方法查找一个 ID,该 ID 找到一个对象并返回该对象,如下所示:

并且以另一种方式设置对象非常简单:

大多数情况下,对象与可用 contentValues 列表中的对象匹配。但是,有时所选对象的 ID 为 0 - 在这种情况下,我想在可用列表中显示一个名为“未选择”的选项。如果对象 ID 为 0,我可以轻松地完成发回不同的对象(或什么都没有)。

我可以用“无选择占位符”来处理这个问题,但是一旦用户选择了其他项目之一,未选择的占位符就会从列表中删除。

我希望能够为用户提供选择项目的能力,或者选择不选择项目(即将其设置回“未选择”)。每次选择更改时,没有通过遍历我从核心数据中获得的数组以编程方式创建整个 NSPopupMenu,有没有办法将一个菜单项插入到列表中,表示用户始终可以使用的未选择状态?

我已经考虑将一个实体对象添加到核心数据存储中,该对象具有所有基于 0 的值,但名称除外,即“未选择”。然而,这只是感觉不是正确的做事方式,并且实际上提出了一些其他问题,即在存储中存在实际上没有任何数据相关性的空对象。

与往常一样,我们将不胜感激任何和所有的帮助。

解决方案

好吧,我并没有完全按照Hobbes the Tige发布的内容进行操作,但这几乎使我到达了需要的位置。我最终创建了一个方法,而不是在 IB 中绑定,该方法允许我在选择更改时将我的对象数组发送到父数组或发起更改的用户活动。然后该方法简单地使用适当的核心数据实体信息更新 NSPopupButton,并且仍然允许我向我们的 IB 绑定匹配对象的 selectedTag。

这是方法

显然,这取决于传递的任何对象数组是否符合name描述性字段的 a 和uid唯一标识符的 a。

任务完成。:-)

0 投票
1 回答
810 浏览

cocoa - 更改日文 (Unicode) 字符的字体大小

我有一个 NSPopUpButton,它包含根据系统语言从 plist 文件中读取的英语或日语字符串。现在,当语言是英语时,我可以使用以下代码更改字体大小 -

但是使用这种技术,即使我尝试设置一些我在谷歌上搜索并发现的日文字体名称,我也无法更改日文字体大小。我想这样做是因为日文字符在使用时会略微向上移动。我打算通过减小字体大小来操纵这种向上运动。谢谢你的帮助..

日本对齐问题

或者

有什么方法可以向下移动 NSPopupButton 中的文本?

0 投票
0 回答
381 浏览

objective-c - fetchWithRequest 中的 NSArrayController 子类 setFetchLimit

我有一个绑定到 CoreData 支持的 NSArrayController 的 NSPopupButton。

我将 NSArrayController 子类化以设置 fetchLimit 和 SortDescriptor。

问题如下:

FetchLimit 仅适用于初始加载。当以编程方式将条目添加到 CoreData 存储时,NSPopupButton 会反映并显示新条目,但不会应用获取限制。我还尝试将 merge: 参数设置为 NO,但这似乎不会影响更新/重新获取。

我错过了什么吗?

0 投票
2 回答
1233 浏览

cocoa - 如何限制 NSPopUpButton 的“弹出”大小?

我有一个大列表 - 超过 200 项 - 由 NSPopUpButton 管理。单击时,列表会一直延伸到屏幕的顶部或底部,甚至更远。

如何限制打开大小,以便一次最多显示 20 个左右的项目?

0 投票
2 回答
893 浏览

cocoa - 如何更改 NSPopUpButton 中 NSMenuItem 的短显示形式?

我有一个 NSPopUpButton 带有一个长菜单项,其中一些非常宽 - 比按钮的闭合宽度更宽。一些菜单项标题如下:

“一个很长的名字的开头并不那么有趣(重要信息)”

菜单关闭时,显示为:

“一个很长的名字的开头不是......”

我希望它显示为:

“真正开始……(重要信息)”

我不知道 NSPopUpButton 是如何创建省略号的。NSMenuItem 上是否调用了选择器?NSPopUpButton 或 NSMenu 是否以某种方式处理?

我需要子类化哪个类,需要覆盖或实现哪个选择器?

非常感谢。

0 投票
0 回答
794 浏览

objective-c - NSMenuItem 操作覆盖 NSPopUpButton 操作

我注意到一个有趣的行为,我想知道这是否是我做错了。我有一个 NSPopUpButton,在 NSPopUpButton 上的 NSMenu 上有几个 NSMenuItems。当我单击弹出按钮并选择一个项目时,我链接到 NSPopUpButton 的操作会被触发,除非我选择的菜单项定义了它自己的操作:@selector(method)。在这种情况下,选择器中的方法会被触发,而其他操作不会。我认为两者都应该发生。

也与此相关,如果我在菜单项上有选择器,并且我调用 [popUpButton selectItemAtIndex:index] 不应该在适当的菜单项上调用选择器吗?

这是正确的行为吗?

0 投票
2 回答
2440 浏览

nspopupbutton - NSPopUpButton, NSComboBox 类似的菜单

我正在尝试创建一个带有下拉菜单的菜单,每个单元格都有自定义背景。首先,我尝试调整 NSPopUpButton 但我找不到更改单元格背景图像的方法。使用 setImage: 会将文本滑动到背景的右侧。接下来我在 NSComboBox 停了下来,但我找不到改变箭头按钮的方法。有人可以帮忙和想法吗?接下来的事情是创建一个自定义控制器,但我想使用已经完成的东西。

0 投票
1 回答
883 浏览

objective-c - CoreData 整数属性上 NSPopupButton 的 NSValueTransformer

我有一个带有 NSPopupButton 的 CoreData/SQLite 应用程序,它显示了某些实体属性(整数)的可能值。它会自动显示数据库中的属性值。用户必须能够分配另一个值,以便我的代码在启动时生成一个包含所有可能值的数组。在我的 XIB 中,我有一个用于按钮的 NSObject 和一个用于可能值的 NSArrayController。绑定完成,一切正常。

当然,只使用数字对用户来说并不清楚,所以我创建了一个值转换器来用弹出按钮上的单词替换数字:1=>Red, 2=>Green, 3=>Blue。

问题是只有选定的 Popup 项被一个单词替换。当我使用弹出按钮选择另一个值来修改实体属性时,它不会保存它。我通过在 TableView 中选择另一个对象然后返回修改后的对象来查看它,弹出窗口将指示 NoValue。

我不明白为什么。谢谢您的帮助。

这是头文件“ColorOption.h”的代码:

下面是实现文件“ColorOption.m”的代码:

0 投票
1 回答
1602 浏览

nsarray - 将 NSPopUpButton 绑定到 NSArray

我对绑定有点迷茫NSPopUpButton。我有一个自定义类,其中包含我想在弹出窗口中显示的项目数组。这些项目是NSManagedObjects 的子类,它们包含在NSArray. 我不想使用 an ,NSArrayController因为我在以编程方式更改选择时遇到了很多麻烦,而且感觉就像使实现混乱。

问题只是我不知道如何将数组正确绑定到弹出窗口。我所做的只是在弹出菜单上列出数组项,但标题是核心数据 URI。我相信我可以使用该description方法更改标题,但这听起来不太可取。

任何想法如何NSArray正确绑定NSPopUpButton

0 投票
1 回答
566 浏览

objective-c - 根据按键更改 NSPopUpButton 项目的可见性

我这里有一个应用程序,它需要从外部文件中读取一堆数据并将其显示为NSPopUpButtonCocoa 用户界面中的一个。这里要注意的是,正在读入的数据需要有一个标志来说明它是否被认为是“隐藏的”。

如果数据被隐藏,则需要将其添加到 中NSPopUpButtonNSMenuItemhidden需要将标志设置为YES,使其通常不会出现在NSPopUpButton菜单中。如果用户按住键盘上的“魔术键”(通常是 ALT,在这种情况下),则需要取消隐藏这些隐藏的对象。如果用户放开 ALT 键,那么他们需要自动重新隐藏,除了可能已经选择的那个——如果NSMenuItem选择了另一个,它将被隐藏。

实际上,我有点花时间弄清楚这一点。

我想知道是否有一种直接的方法可以使用NSArrayController和来做到这一点NSPopUpButton,但到目前为止,我还没有找到任何类似于解决方案的东西——在管理NSMenuItem对象的隐藏属性时不是这样。

有谁知道如何使用 Cocoa Bindings 来实现这一点?