2013-02-12 46 views
0

第一次運行後,我需要在主窗口顯示後不久顯示錶單對話框。如果我在init中執行它或從nib喚醒它,它似乎不能正確工作(如果我在init方法中執行,則表單顯示爲從主窗口分離的窗口)。我想我必須在父窗口顯示後顯示工作表。我有一個appcontroller類,它有一個窗口指針。所以我想我需要註冊爲委託或窗口的東西?並實施一些方法來接收該呼叫? 謝謝,NSWindow的可可事件是什麼,它告訴NSWindow現在在第一次運行後顯示?

回答

1

applicationDidFinishLaunching:是您的切入點。它在應用程序完成設置之後,但在用戶有機會與之交互之前發送給您的應用程序委託。

+0

謝謝,這是一個 – Ahmed 2013-02-12 06:02:06

+2

值得強調的是,這是每個應用程序,而不是每個窗口。如果關閉並重新打開該窗口,則不會再獲得'applicationDidFinishLaunching:',因爲該操作只發生一次,並且已經發生。如果你需要做任何你需要做的事情,任何時候顯示* window *,不僅當應用程序完成啓動時,你需要一些東西成爲窗口的委託並響應正確的委託消息。 – 2013-02-12 06:35:34

+0

@艾哈邁德,彼得霍西的警告是非常正確的。我的回答僅適用於應用啓動時第一次顯示窗口。 – 2013-02-12 07:24:11

2

沒有可靠的事件,通知或委託方法調用。預計你的代碼負責顯示窗口,所以它應該已經知道窗口何時顯示。

您是否依賴於Interface Builder中設置的Laible屬性中的Visible?如果是這樣,你用什麼來加載NIB?希望是一個窗口控制器。在這種情況下,您應該調用-window方法來加載NIB並獲取窗口。結果窗口引用是您將傳遞給開始工作表的方法的內容。

如果在啓動時不依賴Visible,您使用什麼代碼來顯示窗口?例如,在窗口控制器上調用-showWindow:?所以,讓代碼在這之後顯示錶單。

+0

我有'可見在發射檢查'所以是我依靠那個。關於我正在做什麼來加載窗口Nib,沒有什麼,如果你只是在Xcode中創建一個新的可可項目並運行它,就會出現一個窗口。筆尖自動加載並在AppDelgate類的窗口指針。此外,我已經可以在窗口上創建帶有按鈕的工作表,但我想在顯示窗口後顯示它。 @Josh Caswell的回答對我很有幫助 – Ahmed 2013-02-12 05:58:30

+1

@Ahmed:在MainMenu筆尖上打開「Visible at launch」打開窗口可以達到最簡單的目的,但如果您需要自定義這個窗口,那麼是時候移動窗口到一個單獨的筆尖,並使窗口控制器擁有它,併成爲窗口的代表。我通常無條件地馬上做,而不是稍後再移動它。 – 2013-02-12 06:33:02

+0

@PeterHosey感謝您的建議非常有幫助 – Ahmed 2013-02-12 23:23:01