我正在尝试将NSPopOver添加到我的应用中,但仅在运行10.7或更高版本时加载它。我把popover,view controller&查看单独的xib并加载
BOOL loaded = [NSBundle loadNibNamed:@"Popovers.xib" owner:self];
从我的app内部代理'awakeFromNib方法。 xib加载正常(加载为YES),但指向NSPopover的出口保持为空。在awakeFromNib方法中加载xib是否有问题?
有趣的是,当我没有在文件名中包含.xib扩展名时,它就崩溃了。
答案 0 :(得分:1)
如果我做对了,NSBundle的loadNibNamed:owner:方法只会加载bundle,但不会实例化顶级对象。您可以使用适当的NSNib方法执行此操作,例如instantiateNibWithOwner:topLevelObjects:
我更喜欢通过创建NSViewController子类实例来加载nib:
viewController = [[MyViewController alloc] initWithNibName:@"name" bundle:[NSBundle mainBundle]]
然后在自定义视图控制器中实例化Nib - (id)initWithNibName:(NSString *)nibNameOrNil包:(NSBundle *)nibBundleOrNil方法:
[self loadView];