【发布时间】:2013-01-02 00:27:58
【问题描述】:
当我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");
}
test 是我已正确链接的NSView(自定义视图是 xcode 所称的)。
因此,当我创建文本字段并将其手动添加到 NSView,然后通过添加文本和颜色运行相同的代码时,一切正常,当我尝试以编程方式设置视图时,就会出现此问题。此外,我确保这不是我创建的视图,因为我尝试在构建器中创建视图,而不是将其放置在 NSView 中,然后尝试 addSubview:,但这也不起作用。如果您需要更多代码,请告诉我。
开发: 如果nsview(自定义视图)中已经有一个元素(手动添加并且可以是任何东西)并且我添加了它可以工作的文本字段(我在nsview中获得了两个视图)?子视图已经过测试,只是看不到它。
【问题讨论】:
-
我认为您的 NSTextField 没有尺寸,这就是它没有出现的原因。尝试设置框架或边界,或者调用
initWithFrame:bundle:而不是常规的 init,看看会给出什么。 -
好的,所以我试了一下,没有改变。我认为这不会导致更改,因为当我在 xcode 构建器中创建文本字段然后尝试添加它时,我遇到了同样的问题。唯一可行的方法是
NSView和文本字段都是预先制作和预先定位的。 -
你试过把子视图放在前面吗? (self.view bringSubviewToFront:newfield])
-
当我做
[test bringSubviewToFront:newfield];时,我没有看到'nsview'的可见@interface 声明选择器'bringsubviewtofront:' -
详细说明您的最新编辑。你看不见吗?这是否意味着它被隐藏了(你可以通过
isHidden测试),还是它超出了超级视图的框架?
标签: objective-c cocoa