MacOS工程替換MainMenu.xib

創建了一個新工程,勾選了storyboard。但是工程創建好后就后悔了,不想要storyboard,直接刪除了,然后新建了一個MainMenu.xib,在這個xib下添加一個拖一個NSWindow,然后就想把這個window關聯到AppDelegate.m里自己定義的一個window
屬性

 @proporty (weak) IBOutlet NSWindow *window;

然后死活沒法通過拖線關聯上。查了一波資料,總算解決了,方法如下:

Xcode默認創建的MainMenu.xib在Interface Builder中的Objects一欄中是有App Delegate這一項,如圖:

屏幕快照 2017-03-06 下午7.31.01.png

同時AppDelegate中也已經默認連接好了MainMenu.xib中的NSWindow:

@interface AppDelegate ()

@property (weak) IBOutlet NSWindow *window;

@end

然而如果自己創建MainMenu.xib的話,這些都是沒有的。在Interface Builder中的Objects一欄是這樣:

屏幕快照 2017-03-06 下午7.31.23.png

所以我們要增加一個AppDelegate對象上去,并做好和window屬性的關聯。接下來是具體操作步驟:

1、在Objects Library中找到Object:

屏幕快照 2017-03-06 下午7.31.33.png

2、手動將此Object拖到Interface Builder左側的Objects一欄內。

3、在右上的Identity Inspector中設置Class為AppDelegate,這樣Object名字就變成了AppDelegate,也就是我們需要的AppDelegate對象:

屏幕快照 2017-03-06 下午7.31.51.png

4、拖線,把AppDelegate設置成File’s Owner的delegate

屏幕快照 2017-03-06 下午7.31.58.png

5、由于之前創建的是勾選StoryBoard的工程,所以target的General的Deployment Info中Main Interface記錄的是StoryBoard.xib,此時需要將其改成MainMenu.xib。否則的話Run會崩潰。

屏幕快照 2017-03-06 下午7.32.08.png

(當然也可以設置Info.plist中的Main nib file base name屬性)


屏幕快照 2017-03-06 下午7.56.50.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容