さて、ファイルを保存するためのシートを生成するために使用する「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];
}
次に、ファイルの所有者がクラス「NotSoAmazing」に設定した新しい NSView を作成し、インターフェイスにすべてのリンクを作成してコードを実行します。
元のクラスにリンクするインターフェイスがある場合は、代替インターフェイスの代わりに元のインターフェイスを使用します。すべてのリンクを削除すると、何も表示されません。
したがって、私の質問: 子クラスで IBoutlets を処理して別のビューを採用するにはどうすればよいですか?