2014-02-15 43 views
2

我來自一個可可觸摸背景,有一點我堅持,我試圖從頭開始創建一個ViewController,並將我的xib中的對象連接到行動我的新的ViewController。我將文件的所有者更改爲我的ViewController並添加了插座,編譯器似乎對我所做的事情感到滿意。無法連接的行動:類NSApplication的目標

enter image description here

enter image description here

但是當我運行我的應用程序,連接似乎失敗:「無法連接動作開始:目標類的NSApplication的,」但如果是這樣的NSApplication參考隱藏?據我所知,我的ViewController有一個NSViewController類。

ViewController : NSViewController 
+0

看看你的.h文件,讓我知道它是否說「'@interface ViewController:NSViewController'」就像它應該。 B.T.W.,你應該永遠不要在你的子類視圖控制器名稱中如此通用......如何使用諸如「HillsonsViewController」之類的東西? –

+0

.h文件說@interface ViewController:NSViewController –

+1

另一件事,'NSApplication'對象通常隱藏在你的MainMenu.xib文件中(也就是說,如果你使用的是XIB文件)。你有沒有在.m或.h文件中的任何地方聲明的「'start:'」動作?這是唯一失敗的連接還是其他人(因爲您使用了複數的*連接*)? –

回答

1

我改變文件的所有者我的ViewController並增加出口,而編譯器似乎很樂​​意與我做了什麼。

當然,編譯器不會在乎 - 這是一個運行時錯誤。這聽起來像你在你的MainMenu.xib文件中工作。該文件由應用程序對象加載。即使您在.xib中更改了文件所有者的類型,加載.xib的對象仍然是應用程序。

您可能想要爲您的視圖控制器創建一個單獨的.xib文件來加載。您將文件所有者的類型更改爲文件給您查看控制器類!將事物連接到文件的所有者,並且它應該正常工作,因爲您的視圖控制器真的會成爲加載文件的對象。

+0

是的,我現在看到我的MainMenu.xib是由應用程序對象加載的。 –

+0

只是爲了好奇,有沒有辦法控制哪個對象加載哪個xib,或者說這不就是你想要走的路? –

+0

應用程序期望加載主.xib文件,但您當然可以控制哪些對象加載其他.xib文件。視圖控制器通常從.xib文件加載其視圖層次結構,因爲這很有用,但是您可以使用NSNib加載.xibs並創建任何您喜歡所有者的對象。 – Caleb

相關問題