2

私のプログラムでは、次のように設定しています。

インターフェイスビルダーで作成した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 をクリックできません。

誰かが私が間違っていることを知っていますか?! どんな種類の助けも本当に感謝しています!

ありがとうございました!

4

1 に答える 1

2

removeFromSuperview は、そのオブジェクトとそれに含まれるすべてのものを解放します。別のビューに追加しようとしている時点で PaintView が nil であるかどうかを確認します。

于 2013-04-25T02:39:41.423 に答える