在我的程序中,我进行了以下设置:
我在接口构建器中制作了3个NSView
所以PaintView是PlayerView的子视图,而ImageView是PlayerView之上的视图。
程序启动时,ImageView被隐藏。 PaintView是透明的,因此我可以看到它下面的PlayerView,但是在PaintView上会发生单击。到目前为止,一切都很好。
现在,我要完成的事情是,当我按下按钮时,PlayerView变为隐藏,ImageView变为可见,PaintView成为其子视图。这样我就可以看到ImageView穿过透明的PaintView,但是仍然可以单击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。
有人知道我在做什么错吗?任何帮助都非常感谢!
谢谢!
最佳答案
removeFromSuperview会释放该对象及其包含的所有内容。在尝试将PaintView添加到另一个视图时,检查它是否为零。
关于objective-c - 将NSView添加为 subview 后,它没有显示(Cocoa/OSX),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16204513/