Objective c Cocoa中的NSView数组?
我正在开发一个Mac应用程序。其中一个窗口可以加载同一NIB/XIB文件中的多个NSView对象 但我的代码如下所示:Objective c Cocoa中的NSView数组?,objective-c,macos,cocoa,osx-snow-leopard,Objective C,Macos,Cocoa,Osx Snow Leopard,我正在开发一个Mac应用程序。其中一个窗口可以加载同一NIB/XIB文件中的多个NSView对象 但我的代码如下所示: @interface TheWindowController : NSWindowController { //Interface objects IBOutlet NSTableView *detailsTree; IBOutlet NSView *bigView; IBOutlet NSView *sub
@interface TheWindowController : NSWindowController {
//Interface objects
IBOutlet NSTableView *detailsTree;
IBOutlet NSView *bigView;
IBOutlet NSView *subView1;
IBOutlet NSView *subView2;
IBOutlet NSView *subView3;
IBOutlet NSView *subView4;
IBOutlet NSView *subView5;
}
我的问题是,是否可以将所有这些iboutlet保存在一个数组、字典或类似的东西中。因此,将来我可以在我的实现中执行类似的操作:
- (IBAction)traceTableViewClick:(id)sender {
//having now a NSArray called subviewsArray
[[[bigView subviews] objectAtIndex:0] removeFromSuperview];
[rightView addSubview: [subviewsArray objectAtIndex:[detailsTree selectedRow]]];
}
可能吗?怎么用?有什么例子吗?我对一个自定义视图做了类似的操作,该视图包含许多我想要整体操作的控件。您需要在
@interface
声明中将它们分开,以便IBOutlet
属性可以在interface Builder中正常工作,但在init
方法中,您可以将它们组织到一个数组或NSArray
中:
- (id)init
{
self = [super init];
if (self != nil)
{
_viewArray = [[NSArray alloc] initWithObjects:subView1, subView2,
subView3, subView4, subView5, nil];
}
return self;
}
- (void)dealloc
{
[_viewArray release];
...etc...
[super dealloc];
}
然后,您可以根据自己的意愿对其进行操作:
- (void)doThing
{
for (id view in _viewArray)
{
[view doSomething];
}
}
只需将您的NSView添加到NS(可变)数组或NS(可变)字典中,就像添加任何其他对象一样。是否可用
IBOutletCollection
(我只是iOS,所以不确定)<代码>iOutletCollection(NSView)NSArray*视图代码>。然后在interface builder中,将它们连接到集合,而不是单个插座IBOutletCollection
在Cocoa的interface builder上似乎不起作用,链接部分中没有显示。不过在iOS中非常有用。