将NSView添加为子视图后,它不会显示(Cocoa / OSX)

时间:2013-04-25 00:31:49

标签: objective-c macos cocoa nsview

在我的程序中,我有以下设置:

我在界面构建器enter image description here

中创建了3个NSView

因此,PaintView是PlayerView的子视图,ImageView是PlayerView顶部的视图。

程序启动时隐藏ImageView。 PaintView是透明的,所以我看到它下面的PlayerView,但是在PaintView上发生了点击。到目前为止一切都很好。

现在,我想要完成的是,当我按下按钮时,PlayerView变为隐藏状态,ImageView变为可见,并且PaintView成为其子视图。所以我可以通过透明的PaintView看到ImageView,但仍然能够点击PaintView。

到目前为止我的方法是这样的:

// on the app start

[ImageView setHidden: YES];

// on the button press
[PaintView removeFromSuperview];
[PlayerView setHidden:YES];
[ImageView setHidden:NO];
[ImageView addSubview:PaintView positioned:NSWindowAbove relativeTo:nil];

不幸的是,这并没有给我预期的结果。 ImageView位于最顶层,因此我无法单击PaintView。

有谁知道我做错了什么?!任何形式的帮助都非常感谢!

谢谢!

1 个答案:

答案 0 :(得分:2)

removeFromSuperview释放该对象及其包含的所有内容。检查PaintView在您尝试将其添加到另一个视图时是否为零。