【发布时间】:2011-02-03 16:33:31
【问题描述】:
我是我的应用程序,当用户单击系统状态栏中的图标时,我会显示一个 NSView。 这个 NSView 用 MAAttachedWindow 显示。
我的问题是:显示 attachWindow 时如何刷新 NSView 内容(makeKeyandorderFront)
我尝试在 awakeFromNib 方法中刷新内容,但它只工作一次。
谁能帮帮我?
谢谢
【问题讨论】:
标签: objective-c cocoa nsview
我是我的应用程序,当用户单击系统状态栏中的图标时,我会显示一个 NSView。 这个 NSView 用 MAAttachedWindow 显示。
我的问题是:显示 attachWindow 时如何刷新 NSView 内容(makeKeyandorderFront)
我尝试在 awakeFromNib 方法中刷新内容,但它只工作一次。
谁能帮帮我?
谢谢
【问题讨论】:
标签: objective-c cocoa nsview
我找到的解决方案:
我在视图中添加了一个观察者: 我已将对象设置为 [selft window] 以监听 MAAttachedwindow 的 NSWindowDidBecomeKeyNotification 通知。
-(void)awakeFromNib
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:[self window]];
}
-(void) windowDidBecomeKey:(NSNotification *)note
{
// 在这里刷新
}
【讨论】:
-awakeFromNib 只能工作一次的原因大概是因为您只从 xib 加载程序集并保留它一次。
大概在 MAAttachedWindow 实例中实际显示您的视图的任何操作都是在显示之前“刷新”它的理想位置,即您自己调用 -makeKeyAndOrderFront:。
那么:你尝试过什么?
【讨论】: