我可以同时使用具有相同所有者类**的多个nibs文件吗?

时间:2011-10-20 11:31:28

标签: objective-c cocoa nib

我可以同时加载具有相同所有者类的多个nibs文件吗?

所以我可以从不同的笔尖加载工作表吗?

我目前正在使用NSBundle:

[NSBundle loadNibNamed:@"nib1" owner:self];
[NSBundle loadNibNamed:@"nib2" owner:self];

但我收到此错误消息“

<Error>: kCGErrorIllegalArgument: _CGSFindSharedWindow: WID 3387
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
<Error>: kCGErrorIllegalArgument: CGSOrderWindowListWithGroups: invalid window ID (3387)

感谢

2 个答案:

答案 0 :(得分:0)

当然可以加载几个nib,但是你需要确保两个nib文件中的绑定都正确。如果nib文件只包含视图,请为每个NSView创建一个IBOutlet并以这种方式分隔这些nib。

答案 1 :(得分:0)

尝试这种方式:为viewcontroller创建一个主视图,你需要它的大小和空。然后创建一个派生自UIView的新类(即:AlternativeView),并将XIB中的视图类设置为这个新类。 在AlternativeView.m中放置一个这样的方法:

+ (id) newAlternativeView:(NSString*)nibName{
  NSArray* nibViews =  [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
  AlternativeView *me = [nibViews objectAtIndex: 0];
  return me;
}

现在,您可以使用+(id)newAlternativeView:(NSString *)nibName创建视图,并将它们添加/删除到viewcontroller的主视图中。通过这种方式,您甚至可以使用由不同xib加载的许多子视图组成视图。