У меня есть NSButton внутри моей клетки в NSTableView и я хочу, чтобы назначить ей действие и тег, чтобы иметь индекс, так что я сделал:OSX: NSButton с тегом не распознается
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 нет ... почему?
Не используйте 'sender.superview', потому что рано или поздно он сломается (вы не владеете всеми представлениями в иерархии). Nasty - поиск правильного супервизора. Nice - создайте собственный подкласс, чтобы вам не нужен тэг или поиск в виде. – Wain
Спасибо, он отлично работает ma не с "sender.superview", а только с "отправителем" ... – CrazyDev