2012-01-14 8 views

答えて

3

私はあなたのような何かをしたいと思います推測:それは木の散歩なってしまうので、

- (void)addLabelsFromSubviewsOf:(NSView *)view to:(NSMutableArray *)array 
{ 
    // get the label from this view, if it has one; 
    // I'm unsure what test you want here, maybe: 
    if([view respondsToSelector:@selector(stringValue)]) 
     [array addObject:[view stringValue]]; 

    // or possibly: 
    // if([view isKindOfClass:[NSTextField class]]) ? 

    // and traverse all subviews 
    for(NSView *view in [view subviews]) 
    { 
     [self addLabelsFromSubviewsOf:view to:array]; 
    } 
} 

... 

NSMutableArray *array = [NSMutableArray array]; 
[self addLabelsFromSubviewsOf:[window contentView] to:array]; 

ビューは、サブビューを持つことができます。このコードでは、これを達成するために単純な再帰を使用しました。

+0

こんにちは、トミー、おかげで、あなたのソリューションは正常に見えます。私がNSWindowのcontentViewでそれを試してみると、そのサブビューは実際には空です。NSButtonsへのアクセスはできません。助けてくれますか?ありがとう – shader

+0

それは本当に奇妙です。 contentViewをNSLogすれば適切なものが得られますか? – Tommy

+0

出力は shader

関連する問題