代码之家  ›  专栏  ›  技术社区  ›  Eugene Gordin

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

  •  2
  • Eugene Gordin  · 技术社区  · 11 年前

    在我的程序中,我设置了以下内容:

    我在界面构建器中创建了3个NSViews enter image description here

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

    当程序启动时,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 回复  |  直到 11 年前
        1
  •  2
  •   Derek    11 年前

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