objective-c - Cocoa 中的 NSView 数组?

标签 objective-c macos cocoa osx-snow-leopard

我正在开发 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/

相关文章:

swift - 如何配置 WKWebView 来填充 NSWindow?

java - 拒绝连接错误Hadoop Mac

ios - 我必须使用自动布局约束以编程方式在一行中添加标签和文本字段,但项目崩溃

objective-c - 以编程方式查找 watchOS 版本

objective-c - iPad 框架上的 UIActionSheet 太小

objective-c - Objective-C 中 BFS 的内存注意事项

Cocoa 响应程序链和上下文菜单单击

iphone - 真的不应该在生产代码上使用 NSLog() 吗?

macos - OS X mc(午夜指挥官)复制到剪贴板

cocoa - 对 NSMutableArray 进行排序