2011-10-27 17 views
25

在我的appdelegate.m中,不會調用applicationDidFinishLaunching。 我讀過,這是由於我的「應用程序」的委託沒有正確連接的事實,但我不知道如何連接它。我所做的是從XIB文件中右鍵單擊應用程序,然後將代理插座拖放到某處...但不知道在哪裏。 任何幫助表示讚賞。 謝謝!applicationDidFinishLaunching not invoked

回答

44

在您的MainMenu.xib中,確保有一個AppDelegate類的實例。爲了做到這一點,將一個普通對象(藍色立方體)拖到列表中,並將其類名設置爲AppDelegate(或任何您的應用程序委託類名稱)。

同樣在MainMenu.xib中,要連接它,請將應用程序對象的連接拖到您的AppDelegate實例(藍色立方體)並將其連接到代理插座。

完成。

+5

你爲我節省了很多時間,謝謝!除此之外,我必須將它鏈接到文件所有者。 –

+1

跳躍的理念是理解一個nib/xib是凍幹物體*實例的集合。在一個正在運行的應用程序中,通常只有一個主要架構元素(如NSApp實例及其委託)中的一個。文檔控制器/視圖程序集是明顯的例外,但即使如此,單獨的「文檔」原型xib也包含一個表示doc實例的對象,一個主窗口等。但是,您不包括模型的預先烘焙的實例對象在一個xib中(像Person),因爲這是可變的(通常沒有一個Person)。關鍵概念。 :-) –

+1

感謝!我已經花了一天時間試圖弄清爲什麼我的登錄助手突然停止工作。我不小心刪除了,後來創建了一個新的MainMenu.xib – Tibidabo

2

這裏的一些嘗試,如果你已經更新到斯威夫特3:

採取偷看你的「AppDelegate.swift」,並確保相關線路是這樣的:

func applicationDidFinishLaunching(_ aNotification: Notification) { 

相對此:

func applicationDidFinishLaunching(_ aNotification: NSNotification) { 

我剛剛更新了一個應用程序,並沒有想到檢查。結果是我的應用程序啓動了,但相關方法從未被調用過。很明顯,你應該檢查你擁有通知對象的其他函數。

+0

謝謝,這是解決我的問題,來自Swift 2應用程序。 –

相關問題