Cocoa 多次同时加载 nib 模板
Posted
技术标签:
【中文标题】Cocoa 多次同时加载 nib 模板【英文标题】:Cocoa Loading a nib template multiple times, simultaneously 【发布时间】:2011-08-01 18:48:24 【问题描述】:我有两个 nib 文件,一个在启动时打开,另一个在用户单击按钮时加载。第一个工作正常,第二个第一次工作。问题是我想在按下按钮时分别加载第二个 nib 文件几次。目前我正在使用这个:
- (IBAction)startAction:(id)sender
NSNib *nib = [[NSNib alloc] initWithNibNamed:@"SecondView" bundle:nil];
[nib instantiateNibWithOwner:self topLevelObjects:nil];
但这重新加载已经显示的笔尖,我想单独加载一个新视图。它们每个都显示一些用户输入,这些用户输入对于加载的每个视图都是不同的,所以我想它必须被制成单独的对象,这样它们就不会相互干扰。我可以告诉 nib 正在加载,因为显示了一个计时器,并且每次按下 enter 时计时器计数更快,这意味着它们在同一个视图上同时运行,我希望它们在不同的视图上同时运行。我在文档中找到了我正在使用的代码,但它下面写着:
// At this point, our outlets to inside this nib will be properly setup. It is important to note
// that they will get overwritten when this is called again!
所以我不确定是否可以使用此代码完成我想要的,或者我是否应该使用完全不同的东西。
感谢您的帮助!
【问题讨论】:
【参考方案1】:加载 nib 文件后,NSNib
对象使用包的资源映射来定位 nib 引用的其他资源。如果您为 bundle 参数指定了nil
,则NSNib
对象会在与 nib 文件所有者的类关联的 bundle 中查找这些资源。您应该使用不同的所有者对象来实例化您的 nib。
【讨论】:
每个单独的视图是否应该有不同的所有者对象? 另外,我真的不知道该怎么做。我应该使用什么捆绑包?我需要将视图加载大约 9 次,每个对象都是一个对象吗?我不知道如何以编程方式创建或分配新对象。以上是关于Cocoa 多次同时加载 nib 模板的主要内容,如果未能解决你的问题,请参考以下文章
Cocoa:使用 nib 加载 NSViewController
从 Cocoa 中的其他 nib(即 Interface Builder)加载 nib
从情节提要加载的 nib 的 Cocoa replaceSubview