Так что я не смотрел Swift / Cocoa несколько лет. Я только что создал простое приложение для macOS с использованием Xcode 10.0 и вижу, что NSControl больше не имеет метода addTarget(...). Похоже, его заменило свойство target типа id.

Как мне теперь добавить обработчики для таких вещей, как нажатие кнопки, поскольку мне нужно указать действие (например, щелчок), вызываемый объект и селектор для вызова этого объекта.


< Сильный > Решение:

let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
statusItem.button?.target = self
statusItem.button?.action = #selector(didClick(_:))
1
RobertJoseph 24 Сен 2018 в 17:11

2 ответа

Лучший ответ

Правильно, синтаксис на основе метода foo.addTarget(self) был заменен синтаксисом на основе свойств foo.target = self. Он все еще существует в UIKit, потому что в Cocoa Touch вы также должны указать управляющее событие.

И все соответствующие подклассы NSControl имеют методы init для передачи target и action

1
vadian 24 Сен 2018 в 14:22

Он все еще там ... Вы можете пересмотреть документы, чтобы освежить память.

https://developer.apple.com/documentation/uikit/uicontrol/1618259-addtarget

-2
dniswhite 24 Сен 2018 в 14:20