2011-07-31 52 views
1

我有一個AppController對象,其中包含一個實例變量int adventures。 這通過Interface Builder綁定到標籤。如何在另一個對象中設置一個實例變量?

我也有一個叫做PopUpWindow的NSWindowController的子類。當單擊輸入按鈕時,彈出窗口上的文本字段中的值應更改AppController對象中的變量adventures

即使使用@public@package代替adventures它也不會改變。我也試圖從PopUpWindow類中使用

[self willChangeValueForKey:@"adventures"]; 

。這將跨越課程嗎?我怎樣才能做到這一點?

回答

1

這可能是你AppController可以註冊一個命名通知的NSNotifications的好地方,我甚至不關心對象發送它,然後你可以發佈一條通知,告訴你AppController可以接收通知。另一種可能是,如果PopUpWindow由AppController控制器擁有,它可以將AppController作爲委託並向其代理髮送消息。你的代碼

[self willChangeValueForKey:@"adventures"]; 

線似乎表明,在你的AppController發生,但這樣是沒有用的,因爲這隻會告訴你觀察家AppController.adventures,它已經改變了,你想它的工作的其他方式,我彷彿輸入按鈕被點擊,它發送一條消息給你PopUpWindow NSWindowController。

+0

其實它的工作方式是相反的。當應用程序加載一個窗口面板彈出一個文本字段和按鈕詢問一個值。該值應該設置AppController中的變量冒險。我不確定如何使用NSNotifications,但我有手頭的參考書幫助。我也嘗試在PopUpWindow中創建一個變量numOfAdventures並將其綁定到標籤,爲什麼當我在IB中創建對象並將標籤綁定到PopUpWindow.numOfAdventures時它沒有工作? – sud0

+0

作爲一個快速更正,我實際上在我的窗口控制器中分配了AppController,並且調用了 '[controller willChangeValueForKey:@「adventures」];' 不是自我。 – sud0

+0

我通過擺脫NSWindowController的子類並使用'IBOutlet NSWindow * popUpWindow;'解決了我的問題,使它在啓動時可見,並在單擊輸入按鈕時使其關閉。我不知道該怎麼做的唯一的事情就是讓它在你需要的時候重新開放。我習慣了NSWindowController的'showWindow'方法。這是我第一次與NSWindow合作。 – sud0

相關問題