因此,我有一个可以动态调整大小并使用NSView子类填充的NSTabView。我想在IB中设计页面,然后实例化它们并将它们添加到NSTabView中。我已经完成了NSView子类的程序化添加,但我不确定如何在IB中设计它们,然后实例化它们。
发布于 2009-07-03 05:43:57
我想我明白了。如果这不是一件好事,请让我知道。
我创建了一个新的xib文件,将其所有者设置为NSViewController,并将其" view“设置为我在xib中设计的自定义视图。
然后你只需要:
NSViewController *viewController = [[NSViewController alloc] initWithNibName:@"MyViewXib" bundle:nil];
NSView *myView = [viewController view];
发布于 2009-07-03 14:45:25
@toastie有一个非常好的答案。我的是类似的,但需要更多的解释。
假设您已经有了一个控制器对象,并且您不希望仅仅为了获得一个视图而实例化一个新的控制器对象,并且假设您将需要此视图的多个副本(例如,您在IB中设计了一个自定义UITableViewCell,并且希望从UITableViewController中一次又一次地实例化它)。下面是你该怎么做的:
(使格式正常工作的无用文本)
NSNib * viewNib = [[NSNib alloc] initWithNibNamed:@"SpecialView" bundle:nil];
[viewNib instantiateNibWithOwner:self topLevelObjects:nil];
[viewNib release];
NSView * myInstantiatedSpecialView = [[[self specialView] retain] autorelease];
[self setSpecialView:nil];
是的,与其他方法相比,它的代码要多一点,但我更喜欢这种方法,因为视图显示在指定的IBOutlet中。我保留并自动释放视图,因为我喜欢在获得视图后将出口重置为空,这样它就可以立即准备加载视图的新副本。我还会指出,这方面的代码在iPhone上甚至更短,它需要一行代码来加载视图,而不是3行(就像在Mac上一样)。这行代码很简单:
[[NSBundle mainBundle] loadNibNamed:@"SpecialView" owner:self options:nil];
哈!
https://stackoverflow.com/questions/1077807
复制相似问题