0

ロード時にウィンドウにいくつかの NSTextFields をプログラムで追加したいと考えています。次のようなinitの各メソッドに対して、以下のメソッドを呼び出します。

- (id)initWithWindow:(NSWindow *)window{
    [self addTextField:firstTextField toWindow:window at:20];
}

-(void)addTextField:(NSTextField*)theTextField toWindow:(NSWindow*)theWindow at:(CGFloat)y{

    theTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(10, y, 200, 20)];
    [theTextField setBezeled:NO];
    [theTextField setDrawsBackground:NO];
    [theTextField setEditable:NO];
    [theTextField setSelectable:YES];

    [[theWindow contentView] addSubview:theTextField];
}

NSTextFields の 1 つに対して setStringValue を呼び出しても、エラーは発生しません。ただし、ウィンドウには表示されません。簡単なことを見逃したのでしょうか、それとも許可されていないことをしようとしているのでしょうか?

ありがとう

4

2 に答える 2

0

xib からウィンドウをロードする場合は、オーバーライドしないでください。代わり-initWithWindow:に使用-windowDidLoadして、このメソッドにテキストフィールドを追加してください。ただし、プログラムでウィンドウを作成する場合は、次の-initWithWindow:ようにする必要があります。

-(id)initWithWindow:(NSWindow*)window {
    self = [super initWithWindow:window];
    if(self) {
        [self addTextField:firstTextField toWindow:self.window at:20];
    }
    return self;
}
于 2013-09-12T06:59:16.090 に答える