Я хотел бы расширить протокол NSTableViewDelegate
с помощью нескольких пользовательских методов. Например, я хочу, чтобы мой пользовательский подкласс NSTableView
информировал делегата о некоторых конкретных событиях. Можно ли не создавать другой протокол, а добавлять собственные методы к существующему? Какой был бы лучший подход здесь?Как добавить методы в протокол NSTableViewDelegate?
Я пытался писать и расширять до NSTableViewDelegate
, и методы вызываются, но в этом расширении я не имею доступа к классу делегата (мой подкласс NSViewController
). И это как бы разрушает всю идею, потому что диспетчеру нужно реагировать на события по-своему.
Итак: как можно добавить методы к протоколу NSTableViewDelegate
и обеспечить реализацию в классе делегатов?
Извините за многословие :)
Пример кода (в проекте он отличается немного, но идея та же):
extension NSTableViewDelegate {
func didBecomeFirstResponder(_ tableView: NSTableView) {
isTableViewFirstResponder = true //warning: Use of unresolved identifier 'isTableViewFirstResponder'
}
func didResignFirstResponder(_ tableView: NSTableView) {
isTableViewFirstResponder = false //warning: Use of unresolved identifier 'isTableViewFirstResponder'
}
}
isTableViewFirstResponder
является свойством класса делегата. Swift просто не знает, где его искать. Как указать класс, в котором объявлен isTableViewFirstResponder
?
'но в этом расширении у меня нет доступа к классу делегата' - можете ли вы это объяснить? Как именно вы хотите получить к нему доступ? Было бы лучше, если бы вы добавили свой код. – user28434
Благодарим вас за внимание. Добавлен фрагмент кода. –
'NSTableViewDelegate' не знает о' isTableViewFirstResponder'. Я думаю, вы хотите расширить NSTableView, а не делегат. – shallowThought