gpt4 book ai didi

objective-c - 在子类中使用 IBOutlet (Cocoa OSX)

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

好的,我有一个名为“AmazingClass”的类,我用它来生成一个工作表来保存文件。其中有一个带有额外选项的 NSView。它运行良好,但现在我想要更多具有相同功能的窗口,但使用不同的选项,因为它们应该保存不同的文件格式。

基本布局是这样的:

AmazingClass.h

#import <Cocoa/Cocoa.h>

@interface AmazingClass : NSObject {
NSView * _accessoryView;
BOOL _prepared;
}
@property (assign, nonatomic) IBOutlet NSView * accessoryView;
@property (copy, nonatomic) NSString * nibForAcessoryView;
// Methods that generate the save window
- (void) prepareToRun;
@end

AmazingClass.m

#import "AmazingClass.h"

@implementation AmazingClass
@synthesize accessoryView = _accessoryView;
@synthesize nibForAcessoryView;
// Other stuff here
- (void) prepareToRun {
// stuff here
if ([self nibForAcessoryView] == nil) {
[self setNibForAcessoryView: @"AmazingWindow"];
}

[NSBundle loadNibNamed:[self nibForAcessoryView] owner:self];

_prepared = YES;
}

现在我想使用同一个类来处理不同的 NSView,如下所示:

NotSoAmazing.h

#import "AmazingClass.h"

@interface NotSoAmazing : AmazingClass {
IBOutlet NSView * subAccessoryView;
}
@end

NotSoAmazing.m

#import "NotSoAmazing.h"

@implementation NotSoAmazing

- (void) prepareToRun {
[self setAccessoryView:subAccessoryView];
[self setNibForAcessoryView: @"NotSoAmazingWindow"];
[super prepareToRun];
}

然后我创建一个新的 NSView,将其文件所有者设置为“NotSoAmazing”类,我在界面中创建所有链接并执行代码。

如果有一个接口(interface)链接到原始类,我会使用原始接口(interface)而不是替代接口(interface)。如果我删除所有链接,则不会显示任何内容。

因此,我的问题是:如何在 child 类(class)中处理 IBoutlets 以采用不同的 View ?

最佳答案

子类拥有像其父类一样的导出是没有问题的。在本例中,AmazingView 有一个导出,accessoryView,而 NotSoAmazing 有两个导出:accessoryViewsubAccessoryView .

我不清楚您是否希望 NotSoAmazing 从与 AmazingView 相同的 Nib 加载其 accessoryView,或者您是否想要将其连接到 NotSoAmazing Nib 中的不同 View 。我猜是后者,因为您在 NotSoAmazing 中调用 -setNibForAccessoryView: 并将其设置为不同的 nib 文件。另外,如果您要从 Nib 加载 subAccessoryView (或者,如果您是不,为什么那是一个导出?)。

看起来您走在正确的轨道上,但您需要准确地决定您想要发生什么。您想从同一个 Nib 加载两个 View ,还是从两个不同的 Nib 加载两个 View ?

关于objective-c - 在子类中使用 IBOutlet (Cocoa OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712409/

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