我在框架中面临一个关于XIB文件的奇怪问题。此XIB文件包含NSWindow
,NSTableView
和两个按钮,所有这些按钮都通过Outlet连接。 TableView和Buttons按预期工作,但NSWindow
始终为(null)
。
窗口的插座已连接且 XIB正在正确加载,所以我真的很惊讶这对于此特定实例不起作用。
我像这样加载XIB:BOOL success = [NSBundle loadNibNamed:@"SomeXIB" owner:self];
然后我尝试修改窗口:
[window setLevel:NSModalPanelWindowLevel];
[window center];
[window makeKeyAndOrderFront:self];
NSLog(@"Window: %@",window);
NSLog
语句始终返回(null)
,并且上述方法都不执行任何操作,窗口仅显示,因为Visible At Launch
已被选中,否则不会。 (证明XIB装得很好)
我错过了什么吗?
编辑:
以下是我对窗户所做的一切:
BOOL success = [NSBundle loadNibNamed:@"BrowserPrompt" owner:self];
if (success == NO)
{
NSLog(@"Couldn't load XIB.");
return NO;
}
[[self delegate] pickerWillShow:self];
[window setLevel:NSModalPanelWindowLevel];
[window center];
[window makeKeyAndOrderFront:self];
答案 0 :(得分:1)
几乎可以肯定,以下之一是真的:
self.window
不是IBOutlet self
window
IBOutlet相关联。window
到nil
。覆盖setWindow:
以便您可以输入日志记录或断点,并确保它被调用,并检查是否使用nil
或正确的值调用它。