【问题标题】:How can I make a custom NSWindow subclass into a custom NSPanel?如何将自定义 NSWindow 子类制作成自定义 NSPanel?
【发布时间】:2013-09-21 11:35:30
【问题描述】:

我正在使用一个非常复杂的 NSWindow 自定义子类,称为MyWindow。现在我想创建一个名为MyPanel 的新类,它具有与NSPanel 相同的行为,但它继承自MyWindow,因为它是超类。我已经阅读了official docsNSPanel,但它没有说明如何从自定义 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

我的面板.m

#import "MyPanel.h"

@implementation MyPanel

@end

那么,如果不直接继承 NSPanel(这意味着我必须将所有代码从 MyWindow 复制并粘贴到 MyPanel),我现在如何才能做到这一点?我必须重新创建/实现哪些方法、委托、属性才能获得与 NSPanel 相同的行为?

【问题讨论】:

    标签: objective-c macos inheritance osx-lion nswindow


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多