Какао: перебрать все элементы управления в окне? - PullRequest
0 голосов
/ 14 января 2012

Я программирую Mac-приложения с помощью Cocoa.

Как я могу зациклить / перечислить все кнопки, метки и другие элементы управления GUI в NSWindow?Я хочу получить ярлыки каждого элемента управления

Спасибо!

1 Ответ

3 голосов
/ 14 января 2012

Полагаю, вам нужно что-то вроде:

- (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];

Представления могут иметь подпредставления, поэтому в конечном итоге это будет прогулка по дереву. В этом коде я просто использовал простую рекурсию для достижения этой цели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...