Прослушивание ввода в программно созданных шаблонах xib - PullRequest
0 голосов
/ 21 ноября 2018

Я в настоящее время бездельничаю с программным добавлением и удалением шаблонов Views;чтобы удалить шаблон UIView, пользователь должен нажать на кнопку внутри него.

Однако я не уверен, как заставить родительский контроллер представления обрабатывать вводы кнопок.Я хотел бы, чтобы родительский контроллер представления знал, когда кнопка нажата, вместо того, чтобы иметь дескриптор класса xib, потому что в противном случае мне пришлось бы много кружить, и это бы очень быстро раздражало.

Точно так же я не могувручную подключите саму кнопку к классу ViewController, поскольку эти xibs добавляются во время выполнения.

Как получить родительский ViewController для обработки входных данных UIButton в пользовательском шаблоне XIB?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

вы можете использовать метод

button.addTarget(self, action: #selector(yourMethodName), for: .touchUpInside)

здесь "кнопка" будет ссылкой на кнопку в вашей xib.«self» будет ссылкой на viewController, в который вы добавляете .xib.

0 голосов
/ 21 ноября 2018

Аналогично, я не могу вручную подключить саму кнопку к классу ViewController, потому что эти xibs добавляются во время выполнения

Это не так, потому что вы, безусловно, можете позвонить addTarget(_:action:for:) для подключениядействие кнопки для цели контроллера представления в то время, когда вы «добавляете xib».

Однако, даже более прохладное решение - настроить вашу кнопку в xib с действием с нулевым таргетингом.Это означает, что нам не нужна явная цель;нам просто нужно знать имя метода, который будет вызывать действие.Контроллер представления находится выше по цепочке респондента, чем кнопка (как только вы «добавляете xib» для просмотра представления контроллера), и поэтому при нажатии кнопки метод будет найден динамически, если пройтись по цепочке респондента.

...