3

私はMacアプリケーションに取り組んでいます。ウィンドウの 1 つは、同じ 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;
}

私の質問は、これらすべての IBOutlets を配列、辞書などに保持できるかどうかです。したがって、将来的には、実装で次のようなことができます。

- (IBAction)traceTableViewClick:(id)sender {
    //having now a NSArray called subviewsArray
    [[[bigView subviews] objectAtIndex:0] removeFromSuperview];
    [rightView addSubview: [subviewsArray objectAtIndex:[detailsTree selectedRow]]];
}

出来ますか?どのように?例はありますか?

4

2 に答える 2

0

他のオブジェクトを追加するのと同じ方法で、NSViews を NS(Mutable)Array または NS(Mutable)Dictionary に追加するだけです。

于 2012-05-09T02:34:13.023 に答える
0

まとめて操作したい多くのコントロールを含むカスタムビューで同様のことを行いました。プロパティがInterface Builderで正しく機能する@interfaceように、宣言でそれらを別々に保持する必要がありますが、メソッドではそれらを配列または自分で整理できます。IBOutlet initNSArray

- (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];
    }
}
于 2012-04-13T13:07:41.167 に答える