0

我正在尝试将 NSPopOver 添加到我的应用程序中,但仅在运行 10.7 或更高版本时才加载它。我已将弹出框、视图控制器和视图放在单独的 xib 中,并已将其加载

BOOL loaded = [NSBundle loadNibNamed:@"Popovers.xib" owner:self];

从我的应用程序代表的 awakeFromNib 方法内部。xib 加载正常(加载为 YES),但指向 NSPopover 的出口保持为空。在 awakeFromNib 方法中加载 xib 是否有问题?

有趣的是,当我没有在文件名中包含 .xib 扩展名时,它崩溃了。

4

1 回答 1

1

如果我做对了,NSBundle 的 loadNibNamed:owner: 方法只会加载包,但不会实例化顶级对象。您可以通过使用适当的 NSNib 方法来做到这一点,例如 instantiateNibWithOwner:topLevelObjects:。

我更喜欢通过创建 NSViewController 子类实例来加载 nib:

viewController = [[MyViewController alloc] initWithNibName:@"name" bundle:[NSBundle mainBundle]]

然后在自定义视图控制器的 -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 方法中实例化 Nib:

[self loadView];
于 2012-04-10T16:57:29.817 回答