4

当我addSubview:什么都没有出现时。我设置了文本和颜色来查看它。此外,如果我手动将视图添加到 xcode 中 UI bulder 中的自定义视图,它的文本和颜色显示得很好。

.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");

}

testNSView我已正确链接的(自定义视图是 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 回答