У меня есть (упрощенный) иерархии видов Cocoa следующим образом:Как ссылаться на подсмотр из другого в иерархии представлений программным путем?
window
- contentView
-- view1
---> button1
--view2
---> textField1
Важно отметить, что button1
& textField1
НЕ передаём немедленно SuperView.
Я хотел бы добавить целевое действие к button1
, чтобы выполнить что-то (не уместно, что именно) на textField1
(рассмотрите textField1
- это какое-то пользовательское текстовое поле, которое я создал).
В моем понимании, при инициализации кнопка должна иметь ссылку на textField1
, чтобы вы могли добавить «целевое действие».
Моим вопрос: что это лучший способ для button1 заполучить эту ссылку таким образом, что будет масштабироваться до более сложного/глубокого/вложенного вида иерархий
Я надеюсь, ищу что-то немного больше элегантнее:
let reference = self.superview.subview[0].subview[0] as NSView
Interface Builder позволяет щелкнуть правой кнопкой мыши и перетащить с помощью кнопки на TextField, чтобы сделать «соединение», и он использует какой-то внутренний идентификатор для этого. Их что-то похожее делается в коде?
Вы пытались добавить событие к кнопке в contentView? Вы можете получить доступ к своему текстовому полю1, просто позвонив self.view2.textField1. – Miknash
Как 'contentView' знает, что у него есть член' view2' и аналогичным образом, как бы 'view2' знал, что у него есть член' textField1'? Представляете ли вы, что я установил их как членов, помимо того факта, что они были добавлены в массив 'subViews'? – Sam
хорошо, вы можете проверить это, верно? вам нужно добавить это подвью и, следовательно, вы можете проверить, существуют ли они. Вы можете добавить их как членов, а также получить доступ к этому, потому что управлять этими представлениями будет проще. – Miknash