我正在使用一个名为MyWindow
的非常复杂的NSWindow自定义子类。现在我想创建一个名为MyPanel
的新类,它具有与NSPanel相同的行为,但它继承自MyWindow
作为它的超类。我已经阅读了NSPanel
的{{3}},但没有说明如何从自定义的NSWindow子类创建一个面板。我目前的代码:
MyPanel.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
MyPanel.m
#import "MyPanel.h"
@implementation MyPanel
@end
那么现在如何在不直接子类化NSPanel
的情况下完成此操作(这意味着我必须将MyWindow
中的所有代码复制并粘贴到MyPanel
)?我有什么方法,代理,属性来重新创建/实现以获得与NSPanel相同的行为?
答案 0 :(得分:1)
听起来你已经自己回答了这个问题。 NSPanel是NSWindow的子类,因此您应该将NSPanel子类化,而不是子类化NSWindow。这就是说..如果你小心,你可以创建一个NSPanel并以编程方式将其超类更改为MyWindow的实例。