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);
}
Я надеюсь, что смог вам помочь!