我试图添加一个NSPopOver到我的应用程序,但只有在运行10.7或更高版本时才加载它。我放了弹出窗口,视图控制器&视图在一个单独的xib中,并加载
BOOL loaded = [NSBundle loadNibNamed:@"Popovers.xib" owner:self];
从我的应用程序内部委托的awakeFromNib方法。xib加载ok(加载是YES),但指向NSPopover的出口仍然为空。在awakeFromNib方法中加载xib是否有问题?
有趣的是,当我没有在文件名中包含。xib扩展名时,它崩溃了。
如果我做对了,NSBundle的loadNibNamed:owner:方法只会加载bundle,但不会实例化顶层对象。你可以使用一个合适的NSNib方法来实现,例如:instantiateNibWithOwner:topLevelObjects:.
我更喜欢通过创建NSViewController子类实例来加载nib:
viewController = [[MyViewController alloc] initWithNibName:@"name" bundle:[NSBundle mainBundle]]
然后在自定义视图控制器中实例化Nib -(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil方法:
[self loadView];