我正在开发 Mac 应用程序。其中一个窗口可以加载同一 NIB/XIB 文件中的多个 NSView 对象。
但是我的代码如下所示:
@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]]];
}
这可能吗?如何?有例子吗?
最佳答案
我已经对自定义 View 做了类似的事情,其中包含许多我想要集体操作的控件。您需要在 @interface
声明中将它们分开,以便 IBOutlet
property 与 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];
}
}
关于objective-c - Cocoa 中的 NSView 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139819/