2013-04-25 73 views
2

在我的程序,我有以下成立添加後:的NSView沒有顯示出來它被作爲一個子視圖(可可/ OSX)

我有3個NSViews我在界面生成器製成enter image description here

所以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。

有誰知道我做錯了什麼?任何形式的幫助真的很感激!

謝謝!

回答

2

removeFromSuperview釋放該對象及其包含的所有內容。檢查PaintView是否爲零,然後嘗試將其添加到另一個視圖。

+1

我知道這個事實,所以我添加(保留)到PaintView ...它不是零當我將它添加到ImageView(我在調試器中檢查它) – 2013-04-25 02:53:12

+1

嗯,我會說調用removeFromSuperview是不需要的。它會自動從其他超級視圖中移除。另請注意,如果您啓用了ARC,則保留不會執行任何操作。我也會考慮改變addSubview:定位:relativeTo:只是addSubview:因爲它是不必要的代碼。 – Derek 2013-04-25 03:11:09

+1

謝謝你,德里克。看起來像這些變化使它工作! – 2013-04-25 04:06:09

相關問題