Полагаю, вам нужно что-то вроде:
- (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];
Представления могут иметь подпредставления, поэтому в конечном итоге это будет прогулка по дереву. В этом коде я просто использовал простую рекурсию для достижения этой цели.