- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经能够以编程方式创建一个 NSPopupButton 并将其添加到我的窗口中,并且我可以通过相同的方法将项目添加到列表中,但我想弄清楚如何从另一个方法向其添加项目方法。
这是我迄今为止有效的方法:
// in my .h file:
@interface AVRecorderDocument : NSDocument
{
@private
NSPopUpButton *button;
}
@property (assign) IBOutlet NSWindow *mainWindow;
<小时/>
// in my .m file:
@implementation AVRecorderDocument
@synthesize mainWindow;
- (void)windowControllerDidLoadNib:(NSWindowController *) aController
{
NSView *superview = [mainWindow contentView];
NSRect frame = NSMakeRect(10,10,149,22);
NSPopUpButton *button = [[NSPopUpButton alloc] initWithFrame:frame];
[superview addSubview:button];
[button release];
}
- (void)refreshDevices
{
// I'd like to add items to my popupbutton here:
// [button addItemWithTitle: @"Item 1"];
}
@end
在refreshDevices中我没有收到编译器错误,只是没有添加任何内容到弹出按钮中。方法refreshDevices 是从-(id)init 调用的。我还尝试将 windowControllerDidLoadNib 内的代码放在 init 部分的顶部,但它甚至不会在那里创建弹出按钮。
最佳答案
您的代码有两个问题:
windowControllerDidLoadNib 内部:
您不会将新创建的按钮分配给您的 ivar,而仅分配给函数局部变量(与您的 ivar 具有相同的名称)。
为什么 refreshDevices
内没有任何反应
init
在 windowControllerDidLoadNib:
之前被调用,所以你的 ivar 是 nil
(并且因为 1.)。向 nil
发送消息不会执行任何操作。
解决方案:
从 windowControllerDidLoadNib:
中删除 NSPopUpButton *
,以便将新按钮分配给 ivar,而不是某个函数局部变量。
在 windowControllerDidLoadNib:
末尾调用 refreshDevices
或在您知道 windowControllerDidLoadNib:
已被调用且您的按钮已调用的某个时刻不是nil
。
编辑:
您应该记住,当您从 super View 中删除按钮时,它可能会被释放,因为您在创建后释放了它。
释放时,您的 button
ivar 指向无效/已释放的对象,在这种状态下使用时会导致未定义的行为。
我建议release
dealloc
中的按钮,这样您就可以确保在文档对象的整个生命周期中拥有一个有效的对象。
但尽管如此,我不知道您可能需要这种设计的确切用例。
关于objective-c - 以编程方式创建 NSPopupButton 并将项目添加到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235454/
我注册通知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)到带有字符串的数组(以创建演示)时,弹出按钮的标题将更改为数组的值。 有没有办法
我是一名优秀的程序员,十分优秀!