繁体   English   中英

为什么NSStatusItem显示多次?

[英]Why is the NSStatusItem displaying multiple times?

NSStatusItem附加了NSMenu,并且NSMenu的按钮之一打开一个NSWindow。 只要单击这些按钮之一,该窗口就会按预期打开并正常工作,但是NSStatusItem的另一个显示将打开。

NSStatusItem是一个时钟,因此我可以看到它正在正确更新。 但是,克隆的NSStatusItem没有自己的菜单。 如果我按下使窗口次数更多的按钮,则会弹出NSStatusItem的更多克隆版本。

除此之外,一切正常。

没有太多的信息可利用,但是我没有其他可以帮助您的信息。 我很乐意提供更多信息或尝试一些操作。

编辑:每次单击该按钮时,都会以某种方式调用awakeFromNib,这就是为什么另一个半工作的NSStatusItem发生的原因。

编辑:临时解决方法是将awakeFromNib方法放在dispatch_once

编辑:添加了单击按钮时触发的方法,如@zpasternack所建议

- (IBAction)preferences:(id)sender {
    self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
    [[self windowController] showWindow:self];
}

NSStatusItem是否包含在PreferencesWindow笔尖中? 也许可以这样解释,因为每次单击按钮时都在加载笔尖。

另外,是否有理由每次单击按钮都需要重新创建该窗口? 也许您只能第一次做?

- (IBAction)preferences:(id)sender {
    if( self.windowController == nil ) {
        self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
    }
    [[self windowController] showWindow:self];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM