創建了一個新工程,勾選了storyboard。但是工程創建好后就后悔了,不想要storyboard,直接刪除了,然后新建了一個MainMenu.xib,在這個xib下添加一個拖一個NSWindow,然后就想把這個window關聯到AppDelegate.m里自己定義的一個window
屬性
@proporty (weak) IBOutlet NSWindow *window;
然后死活沒法通過拖線關聯上。查了一波資料,總算解決了,方法如下:
Xcode默認創建的MainMenu.xib在Interface Builder中的Objects一欄中是有App Delegate這一項,如圖:
同時AppDelegate中也已經默認連接好了MainMenu.xib中的NSWindow:
@interface AppDelegate ()
@property (weak) IBOutlet NSWindow *window;
@end
然而如果自己創建MainMenu.xib的話,這些都是沒有的。在Interface Builder中的Objects一欄是這樣:
所以我們要增加一個AppDelegate對象上去,并做好和window屬性的關聯。接下來是具體操作步驟:
1、在Objects Library中找到Object:
2、手動將此Object拖到Interface Builder左側的Objects一欄內。
3、在右上的Identity Inspector中設置Class為AppDelegate,這樣Object名字就變成了AppDelegate,也就是我們需要的AppDelegate對象:
4、拖線,把AppDelegate設置成File’s Owner的delegate
5、由于之前創建的是勾選StoryBoard的工程,所以target的General的Deployment Info中Main Interface記錄的是StoryBoard.xib,此時需要將其改成MainMenu.xib。否則的話Run會崩潰。
(當然也可以設置Info.plist中的Main nib file base name屬性)