- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试实现一个根据 NSPopUpButton
的状态更改标签的系统。
到目前为止,我已经尝试执行下面代码中显示的操作,但每当我运行它时,代码都会跳转到 else
子句,引发警报
- (IBAction)itemChanged:(id)sender {
if([typePopUp.stringValue isEqualToString: @"Price per character"]) {
_currency = [currencyField stringValue];
[additionalLabel setStringValue: _currency];
}
else if([typePopUp.stringValue isEqualToString: @"Percent saved"]) {
_currency = additionalLabel.stringValue = @"%";
}
else alert(@"Error", @"Please select a calculation type!");
}
那么这里有人知道如何解决这个问题吗?
最佳答案
@hamstergene 在正确的轨道上,但比较的是菜单项的标题,而不是 标签,这是错误的,原因如下:
话虽如此,NSPopUpButton
使得很难将标签插入到菜单项中,因此您需要使用所选项目的索引:
假设您使用以下方法创建菜单项:
[typePopUp removeAllItems];
[typePopUp addItemsWithTitles: [NSArray arrayWithObjects: @"Choose one...", @"Price per character", @"Percent saved", nil]];
然后创建一个匹配数组中标题顺序的枚举
:
typedef enum {
ItemChooseOne,
ItemPricePerCharacter,
ItemPercentSaved
} ItemIndexes;
然后比较选中的item索引,如下:
- (IBAction)itemChanged:(id)sender {
NSInteger index = [(NSPopUpButton *)sender indexOfSelectedItem];
switch (index) {
case ItemChooseOne:
// something here
break;
case ItemPricePerCharacter:
_currency = [currencyField stringValue];
[additionalLabel setStringValue: _currency];
break;
case ItemPercentSaved:
_currency = @"%"; // See NOTE, below
additionalLabel.stringValue = @"%";
break;
default:
alert(@"Error", @"Please select a calculation type!");
}
}
注意您的代码中的以下行不正确:
_currency = additionalLabel.stringValue = @"%";
多重赋值有效是因为x = y
的结果 是y
。当涉及 setter 时,情况并非如此。更正后的代码如上。
编辑根据来自 OP 的更多信息,对这个答案进行了大量编辑。
关于objective-c - 如何为 NSPopUpButton 进行项目更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18759553/
我注册通知NSPopUpButtonWillPopUpNotification,以便在显示弹出菜单之前更改它。新的弹出菜单包括正在运行的应用程序列表和受人尊敬的图标。当选择应用程序时,它会调用 @se
我的 View 上有几个 NSPopupButtons,它们在其中一个文本字段之后被定义为 newKeyView。问题是,当按下选项卡按钮时,不知怎的,他们没有得到聚焦环,就像他们被忽略了一样。应该怎
我创建了一个 NSCell 的自定义子类,其中包含一个 NSImageCell、一些 NSTextFieldCell 和一个 NSPopUpButtonCell。 我正在使用以下方法初始化弹出单元格:
我使用此代码向 NSView 添加弹出按钮: if (popupButton) [popupButton release]; popupButton = [[NSPopUpButton alloc]
当用户鼠标(或以其他方式细读)NSPopUpButton 中的项目时,是否可以检测到告诉我的 Controller 的操作?我似乎只收到有关新选择的通知,并且我希望在用户滚动菜单中的任何项目时收到通知
我有一个应用程序列表,我想制作一个 NSPopupButton 来显示应用程序名称的菜单,并在每个项目的左侧显示其图标。 我已经能够将 NSPopupButton 绑定(bind)到我的项目数组,但没
有没有办法自定义 NSPopUpButton 箭头的颜色?我环顾四周,但还没有找到答案 最佳答案 我真的不认为有一种“简单”的方法可以做到这一点。如果您查看 API 说明,它甚至指出它不会响应 set
我想创建一个带有自定义事件图像的 NSPopUpButton。我有两张图像,一张用于非事件图像,另一张用于事件图像。在界面生成器中,我设置了图像和 Alt。 NSPopUpButton 的图像。图像显
我的 Mac OS 应用中有一个清除按钮。 按下按钮时,它会清除表单的所有值并将 NSPopUpButton 重置为第一项。 问题是如何使用代码更改 NSPopUpButton 控件。 谢谢 最佳答案
我正在构建一个 OS X 桌面应用程序,允许用户从下拉列表中选择一个项目。我正在尝试创建一个 NSPopupButton 菜单,例如对 this question 的响应,这也与this tutori
我正在创建一个 NSPopUpButton,它有多个 NSMenuItems,每个 NSMenuItems 都有一个图像和一个标题。我试图创建的功能是这样的:当弹出窗口显示时我希望它正常运行,显示标题
我正在实现一个 NSPopUpButton(用于使用 Swift 的 macOS 应用程序),如图所示: 而且,我有以下代码,它确实有效: enum Importance: Int8 { case E
我在我的应用程序中的自定义 View 中创建了一个 NSPopUpButton,该 View 具有黑色填充。我现在想让 NSPopUpButton 具有白色文本颜色,但我似乎无法做到这一点。我应该怎么
property myPopUp : missing value on startbuttonpressed_(sender) if myPopUp's selectedItem = "Ite
我想复制下面菜单的外观,并在弹出按钮的菜单中命名为“部分”。 我可以看出灰色水平线是 NSMenuItem.separator() 但在这些水平线上设置标题和属性标题不起作用。添加子菜单让我无处可去,
我熟悉如何将数据从一个核心数据实体馈送到 NSPopUpButton 项中,以便可以为另一个项选择该数据。像这样的绑定(bind): 对于值本身: -> ValueSelection.Content
我是 Mac 编程新手,所以如果我的问题太愚蠢,请原谅我。 我正在编写一个小型应用程序,我需要在其中设置目标文件夹。我认为,不只是使用 NSButton “选择文件夹”,而是使用 Firefox 或
我正在构建一个应用程序,它有两个 NSPopUpButtons 作为 View 的一部分。第一个标题为 userChoice1,第二个标题为 userChoice2。我希望禁用 userChoice2
是否可以在 NSPopupButton 上设置默认选择?我有一个允许用户选择他们想要设置的服务器类型,但由于 NSPopupButton 始终显示第一项,如果这是他们想要的类型,他们可能会忽略它。但是
我有一个没有标题的 NSPopUpButton。我为这个弹出按钮设置了一个 NSImage。当我将内容值绑定(bind)到带有字符串的数组(以创建演示)时,弹出按钮的标题将更改为数组的值。 有没有办法
我是一名优秀的程序员,十分优秀!