OSX: NSButton с тегом не распознается

У меня есть NSButton внутри моей ячейки в NSTableView, и я хочу назначить ему действие и тег, чтобы иметь индекс, поэтому я сделал:

NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    if( [tableColumn.identifier isEqualToString:@"check"] )
    {
        NSButton *button = (NSButton*)[cellView viewWithTag:100];

        if (button == nil)
            NSLog(@"button is null");
        [button setTag:row];
        [button setAction:@selector(SelectRow:)];
    }

}

- (IBAction)SelectRow:(id)sender{

    NSInteger index = [sender tag];

    NSLog(@"index:%lu", index);
}

Вы можете видеть, что у меня есть NSButton, который начинается с tag = 100: я установил его в xib-файл и изменил его значение строки. Но у меня кнопка ноль, потому что она входит в состояние. В IOS это работает нормально, но в OSX нет... почему?

1 ответ

Решение

Если вам нужен только тег, чтобы получить правильный индекс строки, у меня может быть другое решение для вас. Мне нужно было определить вид с помощью нажатия кнопки, а также. Вместо того, чтобы использовать теги, я просто попросил табличное представление для индекса кнопок superview. Для меня это был лучший подход из-за изменения порядка ячеек.

- (IBAction)selectRow:(NSButton *)sender {
     NSInteger row = [_tableView rowForView:sender.superview];
     NSLog(@"index:%lu", index);
}

Я надеюсь, что смог вам помочь!

Другие вопросы по тегам