0
私はCocoaでMacアプリケーションをプログラミングしています。Cocoa:ウィンドウ内のすべてのコントロールをループしますか?
NSWindowのすべてのボタン、ラベル、およびその他のGUIコントロールをループ/列挙できますか?私は各コントロールのラベルを取得したい
ありがとう!
私はCocoaでMacアプリケーションをプログラミングしています。Cocoa:ウィンドウ内のすべてのコントロールをループしますか?
NSWindowのすべてのボタン、ラベル、およびその他のGUIコントロールをループ/列挙できますか?私は各コントロールのラベルを取得したい
ありがとう!
私はあなたのような何かをしたいと思います推測:それは木の散歩なってしまうので、
- (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];
ビューは、サブビューを持つことができます。このコードでは、これを達成するために単純な再帰を使用しました。
こんにちは、トミー、おかげで、あなたのソリューションは正常に見えます。私がNSWindowのcontentViewでそれを試してみると、そのサブビューは実際には空です。NSButtonsへのアクセスはできません。助けてくれますか?ありがとう – shader
それは本当に奇妙です。 contentViewをNSLogすれば適切なものが得られますか? – Tommy
出力は –
shader