gpt4 book ai didi

cocoa - 从具有 View 的 xib 加载无边框窗口

转载 作者:行者123 更新时间:2023-12-03 17:41:56 26 4
gpt4 key购买 nike

我正在尝试从程序中的 .xib 加载无边框窗口。我可以通过重写 [[[NSWindow]] initWithContentRect:styleMask:backing:defer:] 来加载无边框窗口,如下所示:

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {

self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:bufferingType defer:flag];
if (!self) {
return nil;
}

[self setOpaque:NO];
[self setHasShadow:YES];
[self setLevel:NSFloatingWindowLevel];
[self setBackgroundColor:[NSColor clearColor]];
[self setAlphaValue:1.0];

// Ignore events
[self setIgnoresMouseEvents:YES];

return self;
}

当调用另一个包含[self orderFront:self];的方法时,会显示一个窗口。但是,我有一个单独的 .xib 文件,其中创建了一个窗口,我想在调用此方法时显示该窗口。我将文件的所有者设置为 NSApplication,窗口本身属于包含上述代码的类。当我使用 [self orderFront:self]; 调用方法时,如何在 xib 中加载窗口并显示它,而不是此类创建窗口?

最佳答案

如果我明白您要做什么,您可以使用 NSWindowController 从单独的 nib(或 xib)文件加载 NSWindow。子类 NSWindowController,并将 Controller 代码放入其中。在 xib 文件中创建该对象并将其设置为文件的所有者。将 NSWindow 链接到 NSWindowController 的委托(delegate) socket 。

那么就很简单:

NSWindowController * windowController = [[[YourWindowClass alloc] initWithWindowNibName:@"YourWindowClass"] autorelease];
NSWindow * sheet = [windowController window];

关于cocoa - 从具有 View 的 xib 加载无边框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688270/

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