你最終描述的錯誤發生的原因調用加載筆尖文件失敗。確保您爲Interface Builder文件提供了正確的名稱。
您可以通過多種方式提供正確的值(取決於您使用了AppKit的),所以我會制定出最常見的兩種可能性,你可以跟蹤哪一個適用於您。鑑於你在問題中所說的話,我懷疑你會處理第一種情況。
NSDocument windowNibName
如果你是依靠文檔架構的默認設置,你可能不會直接使有問題的電話。相反,該框架以您的名義號召,利用你在給定的文檔類指定任何筆尖的名字。例如,如果要使用文檔類「XYZDocument」創建一個新的基於文檔的項目,則Xcode模板將爲您提供一個基本的XYZDocument類和一個XYZDocument.xib文件。該XYZDocument實施文件將在它下面:
// XYZDocument.m
- (NSString *)windowNibName {
return @"XYZDocument"; // this name tells AppKit which nib file to use
}
如果你要改變這個值,你會創建[NSWindowController loadWindow]
錯誤。
NSWindowController初始化方法
如果您正在這個叫自己(也許是對自己的NSWindowController子類),那麼你就已經寫類似下面的一行。
// XYZWindowController.m (a subclass of NSWindowController)
- (id)init {
self = [super initWithWindowNibName:@"XYZDocument"];
if (self) {
// initializations
}
return self;
}
如果您提供的字符串參數與nib文件的名稱不匹配,則會發生相同的錯誤。
如果你有XIB文件,爲什麼你會想要做NIB文件(我甚至不知道是否有可能從現代版本的Xcode創建它們)?另外,你是否以編程方式或通過XIB實例化窗口控制器? –
假設你使用'NSWindowController'的一些子類,你的'init'(或類似的)方法是什麼樣的?你在創建課程時是否創建了一個'xib'? –
您是否在initWithWindowNibName:方法中提供了xib名稱作爲「foobar.xib」或只是「foobar」?如果它在磁盤上被命名爲「foobar.xib」,它應該是代碼中的「foobar」。我之所以提到這一點,是因爲它之前已經知道要把我絆倒。 – Mel