2012-04-14 59 views
0

我在我的AppDelegate中創建了一個窗口,然後當我使用newContentView執行任何操作時,將內容視圖設置爲NSView子類「CutoutView」,例如從CutoutView獲取方法,他們工作得很好。來自不同類的方法兩次

// Configure contentView in AppDelegate 
    newContentView = [[CutoutView alloc]initWithFrame:window.frame]; 
    [window setContentView:newContentView]; 

現在我有另一個名爲MoveFilter的NSView子類,我希望能夠從我的CutoutView中調用方法。問題是爲了做到這一點,我必須再次分配和初始化CutoutView方法,並且在執行方法時可以調用,但沒有顯示任何內容,因爲CutoutView之前已經是alloc和init。

// in MoveFilter 
cutOutView = [[CutoutView alloc]init]; 
[cutOutView someMethod]; 

什麼我需要添加到MoveFilter或我能看着幫我能夠調用方法,他們將顯示就像newContentView呢?對不起,我是新手,謝謝!

回答

2

獲取現有的從應用程序的委託CutoutView:(假設你有這樣的屬性 - 它看起來像你把它變成伊娃)

CutoutView * cv = [[NSApp delegate] newContentView]; 

或窗口:

// in MoveFilter 
CutoutView * cv = [[self window] contentView]; 

(假設MoveFilterCutoutView是在同一窗口)

或者,如果這兩個假設都不正確,則可以合併這兩個過程並獲取應用程序委託的窗口的內容視圖。我會把它作爲你的練習。

+0

我爲newContentView創建了一個屬性,我用你的第一個例子'CutoutView * cv = [[NSApp delegate] newContentView];'它們在單獨的窗口中,所以在我的下一行中,我嘗試着像'cv = [[self window] contentView];'但是我得到一個錯誤,我關閉了嗎? – 2012-04-14 18:21:59

+1

'[[[NSApp委託]窗口] contentView]' – 2012-04-14 18:46:34

+0

所以這樣? 'CutoutView * cv = [[NSApp delegate] newContentview];''''和'cv = [[[NSApp委託]窗口] contentView];'它錯誤地給出錯誤,但我無法調用某個方法'[cv someMethod]'謝謝爲了保持耐心 – 2012-04-14 18:55:55