Чтобы определить данные для ячейки таблицы (NSTableView), в которой произошло нажатие кнопки, вам понадобятся следующие шаги:
1. Настройте делегата и источник данных для таблицы.
- Назначьте делегата и источник данных для таблицы. Наиболее удобный способ сделать это - использовать Interface Builder.
- Убедитесь, что ваш класс делегата и источника данных соответствуют протоколам NSTableViewDelegate и NSTableViewDataSource соответственно.
2. Реализуйте метод делегата таблицы, который будет вызываться при нажатии на кнопку в ячейке:
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? { // Ваш код для создания ячейки таблицы let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier("CustomCell"), owner: self) as! CustomCell // Установите селектор для кнопки в ячейке cell.button.target = self cell.button.action = #selector(buttonClicked(_:)) // Установите tag для кнопки, чтобы идентифицировать ячейку cell.button.tag = row return cell }
3. Реализуйте метод обработчика нажатия кнопки:
@objc func buttonClicked(_ sender: NSButton) { let row = sender.tag // Получите данные для ячейки таблицы if let data = dataSourceArray[row] { // Обработайте данные ячейки таблицы, в которой произошло нажатие кнопки // Например, вы можете отобразить данные в другом месте или выполнить какие-либо операции с данными } }
В методе tableView(_:viewFor:row:) устанавливается селектор и тег для кнопки в ячейке. Тег равен значению row, которое указывает на индекс нажатой ячейки в исходном массиве данных таблицы. В методе buttonClicked(_:), используя переданный тег, вы можете получить данные для соответствующей ячейки и произвести необходимые действия с этими данными.
Обратите внимание, что вам нужно указать идентификатор ячейки (CustomCell) в Interface Builder или создать ячейку программно, инициализировав ее с помощью своего собственного класса, который наследуется от NSTableCellView.