gpt4 book ai didi

objective-c - 框架和 XIB

转载 作者:行者123 更新时间:2023-12-03 18:02:18 25 4
gpt4 key购买 nike

我在我的框架中遇到了一个关于 XIB 文件的奇怪问题。该 XIB 文件包含一个 NSWindowNSTableView 和两个按钮,所有这些按钮都通过 Outlet 连接。 TableView 和 Button 按预期工作,但 NSWindow 始终为 (null)

窗口的 socket 已连接并且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];

最佳答案

几乎可以肯定,以下情况之一是正确的:

  • self.window 不是 IBOutlet
  • 您的 XIB 的文件所有者与 self 不是同一类
  • 您尚未将 IB 中的 NSWindow 连接到文件所有者的窗口 IBOutlet。
  • 您在加载和使用之间将 window 设置为 nil
  • 您在加载代码之前运行窗口修改代码(这个错误非常常见)。

重写setWindow:,以便您可以放入日志记录或断点,并确保它被调用,并检查是否使用nil或正确的值调用它。

关于objective-c - 框架和 XIB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com