1

我正在使用一个非常复杂的 NSWindow 自定义子类,称为MyWindow. 现在我想创建一个名为的新类MyPanel,它具有与 NSPanel 相同的行为,但继承自MyWindow它的超类。我已经阅读了官方文档NSPanel但没有说明如何从自定义 NSWindow 子类制作面板。我当前的代码:

我的面板.h

#import "MyWindow.h"

@interface MyPanel : MyWindow

- (BOOL)isFloatingPanel;
- (void)setFloatingPanel:(BOOL)flag;
- (BOOL)becomesKeyOnlyIfNeeded;
- (void)setBecomesKeyOnlyIfNeeded:(BOOL)flag;
- (BOOL)worksWhenModal;
- (void)setWorksWhenModal:(BOOL)flag;

@end

我的面板.m

#import "MyPanel.h"

@implementation MyPanel

@end

那么现在如何在不直接子类化的情况下完成此操作NSPanel(这意味着我必须将所有代码从MyWindowto 复制并粘贴到MyPanel)?我必须重新创建/实现哪些方法、委托、属性才能获得与 NSPanel 相同的行为?

4

1 回答 1

1

听起来您已经自己回答了这个问题。NSPanel 是 NSWindow 的子类,所以你应该继承 NSPanel,而不是继承 NSWindow。话虽如此.. 如果您小心,您可以创建一个 NSPanel 并以编程方式将其超类更改为 MyWindow 的实例。

于 2013-09-17T12:42:32.940 回答