gpt4 book ai didi

objective-c - 菜单将打开 : and menuDidClose: not invoked for NSMenuDelegate

转载 作者:行者123 更新时间:2023-12-03 17:38:01 24 4
gpt4 key购买 nike

[编辑],Willeke 指出它是 menuDidClose: 而不是 menuWillClose:。我的代码实际上该部分是正确的。纠正该帖子以防其他人发现此研究类似的问题。

我确信这只是一个 cocoa 新手问题,但我已经绞尽脑汁几个小时了。我已经阅读了 NSMenu 和 NSMenuDelegate 文档几次,试图找出我缺少的内容,但它看起来很简单。

我有一个用于首选项窗口的窗口 Controller ,带有工具栏和三个 View 。窗口 Controller 被声明为 NSMenuDelegate。

@interface PrefsController : NSWindowController <NSMenuDelegate, NSWindowDelegate, NSOpenSavePanelDelegate>

此问题是第一个 View 上的 NSPopUpButton。与弹出按钮关联的菜单工作正常。我可以通过关联的 IBOutlet 变量修改菜单等。它绑定(bind)到共享用户默认 Controller 以获得选定的值,并且工作正常。

但是访问菜单时不会调用 menuWillOpen:menuDidClose: 方法。

- (void)menuWillOpen:(NSMenu *)menu {
if (menu == myPopupButton.menu) {
[self updateMenuImages:NSMakeSize(32, 32)];
}
}


- (void)menuDidClose:(NSMenu *)menu {
if (menu == myPopupButton.menu) {
[self updateMenuImages:NSMakeSize(16, 16)];
}
}

对于我几乎可以肯定是一个愚蠢的错误,我深表歉意,但我被难住了。

最佳答案

菜单委托(delegate)并不经常使用,因此 Apple 并没有让它们在 Interface Builder 中设置起来变得太容易。相反,请在 awakeFromNib 中执行此操作:

myPopupButton.menu.delegate = self;

关于objective-c - 菜单将打开 : and menuDidClose: not invoked for NSMenuDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com