作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为 Mac OS X 创建了一个仅状态栏的应用程序。类似的东西 http://d.pr/i/Covi 。我通过本教程创建了它http://cocoatutorial.grapewave.com/2010/01/creating-a-status-bar-application/ 。现在我有一个问题:如何通过单击“关于”菜单项来显示窗口?我尝试这样做:
#import "IGAppDelegate.h"
#import "IGAboutWindowController.h"
@implementation IGAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (void)awakeFromNib {
_statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[_statusItem setMenu:_menu];
[_statusItem setTitle:@"LeoHelper"];
[_statusItem setHighlightMode:YES];
}
#pragma mark - Actions
- (IBAction)quit:(id)sender {
[NSApp terminate:self];
}
- (IBAction)about:(id)sender {
IGAboutWindowController *aboutController = [[IGAboutWindowController alloc] init];
[aboutController showWindow:self];
}
@end
最佳答案
我猜测您正在使用自动引用计数(ARC)。如果是,那么 about:
方法中将会发生以下情况:
您首先创建一个 IGAboutWindowController
的本地实例,然后告诉它显示其窗口。这将在屏幕上显示该窗口,但是,如果您的项目使用 ARC,该窗口将立即消失。原因是,一旦 about:
方法结束,IGAboutWindowController
的本地实例将自动释放,因此,其窗口将被删除从屏幕上。
要在 ARC 管理的项目中成功实现此 about:
方法,您应该将 aboutController
定义为 IGAppDelegate
的实例变量像这样的类:
@class IGAboutWindowController;
@interface IGAppDelegate : NSObject <...>
@property (nonatomic, strong) IGAboutWindowController *aboutController;
@end
然后实现您的 about:
方法,如下所示:
- (IBAction)about:(id)sender {
if (self.aboutController == nil)
self.aboutController = [[IGAboutWindowController alloc] init];
[aboutController showWindow:self];
}
关于objective-c - cocoa 。如何仅在托盘应用程序中显示窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14389291/
我是一名优秀的程序员,十分优秀!