1

私がやろうとしているのは、ウィンドウを開くオブジェクトへのメソッドを作成することです。このウィンドウで、オブジェクトのインスタンスのいくつかのプロパティを出力したいと考えています。これを行うために、「view」と呼ばれる NSWindowController プロパティを持つ NSObject の「Profile」サブクラスを作成しました。

@interface Profile : NSObject {
    \\...
}

@property (readwrite, assign) NSWindowController *view;

Interface Builder を使用して「view」をウィンドウに接続できないため (または少なくとも方法がわからない)、「initWithWindowNibName」を使用して接続する必要があります。そこで、「プロファイル」の init メソッドを次のようにオーバーライドしてみました。

-(Profile *)init{
    self = [super init];
    if(self){
        [[self view] initWithWindowNibName:@"Profile"];
    }
    return self;
}

私のアプローチが正しいかどうかはわかりません。実際には、ウィンドウを表示しようとすると表示されません。これが私が試した方法です:

Profile *profile = [[Profile alloc] init];
[[profile view] showWindow:self];

あなたが助けてくれることを願っています:)

4

1 に答える 1

2

次のようなものは必要ありませんか?

@interface Profile:NSObject

@property (nonatomic, strong) NSWindowController *windowController;

@end

と:

- (Profile *)init {
    self = [super init];
    if( !self ) { return nil; }

    self.windowController = [[NSWindowController alloc] initWithWindowNibName:@"Profile"];
    return self;
}

と:

// show window
Profile *profile = [[Profile alloc] init];
[[profile windowController] showWindow:self];

(私はARCを想定しています。)

編集:NSWindowController OP を明確にするために、私は彼のプロパティ 命名法に従いましたview。ただし、 a はビューではないため、混乱NSWindowControllerします。他の人にわかりやすくするために、私はそれを変更しました。

于 2012-09-24T00:26:27.757 に答える