4

何も表示されないときaddSubview:。テキストと色を設定して表示します。また、xcode の UI バルダーのカスタム ビューにビューを手動で追加すると、テキストと色で問題なく表示されます。

.m ファイル

- (void)displayString:(NSString *)title {
    NSRect frame = NSMakeRect(10, 10, 200, 17);
    NSTextfield *newfield = [[NSTextField alloc] initWithFrame:frame];
    [newfield setBezeled:NO];
    [newfield setDrawsBackground:NO];
    [newfield setEditable:NO];
    [newfield setSelectable:NO];
    [newfield setStringValue:title];
    [newfield setTextColor:[NSColor blueColor]];
    [test addSubview:newfield];

    if([test.subviews containsObject:newfield]){
        NSLog(@"view there"); // i get this message 
    }
    if([newfield isHidden]){
        NSLog(@"view hidden"); //i dont get this message
    }
    NSLog(@"view set");

}

test私が適切にリンクしたものですNSView(カスタムビューはxcodeがそれを呼んでいるものです)。

したがって、テキスト フィールドを作成してNSView手動で追加し、テキストと色を追加して同じコードを実行すると、すべて正常に動作しますが、プログラムでビューを設定しようとすると、この問題が発生します。また、ビルダーでビューを作成しようとしたがNSView、それを配置してから試みたのaddSubview:ではなく、それも機能しないため、ビューの作成ではないことを確認しました。さらにコードが必要な場合はお知らせください。

開発: nsview (カスタム ビュー) に既に要素があり (手動で追加され、何でもかまいません)、テキスト フィールドを追加すると、機能します (nsview で両方のビューを取得します)。サブビューはテストされていますが、表示されません。 ここに画像の説明を入力

4

3 に答える 3

2

initWithFrame:代わりに電話する必要がありますinit

- (void)displayString:(NSString *)title {
    NSRect frame = NSMakeRect(10, 10, 200, 200);
    NSTextField *newfield = [[NSTextField alloc] initWithFrame:frame];
    [newfield setStringValue:title];
    [newfield setTextColor:[NSColor blueColor]];
    [test addSubview:newfield];
    NSLog(@"view set");
}
于 2013-01-02T01:34:49.290 に答える
1

テストとはどのような種類のビューですか? また、次のことを行う必要があります。

 newfield.frame = CGRectMake(x,y,width,height) 

ビューの外観を指定するため

于 2013-01-02T01:19:09.290 に答える
0

ビューの設定が早すぎることがわかりました。設定後にビューに何をしてもビューに反映されるという印象を受けましたが、それが問題のようでした。ビューを正確に変更した後、のビューを設定しますNSStatuditem。だから私は得る

  [newfield setStringValue:title];
  [newfield setTextColor:[NSColor blueColor]];
  [test addSubview:newfield];
  [statusItem setView:test];//this is the key, setting it after he changes. 
于 2013-01-04T17:47:27.160 に答える