Как вызвать метод, исходящий из службы ViewController A, делегированной для кнопки ViewController B?
Я реализовал ViewControllerA
, который также является делегатом службы (в основном, многопользовательского подключения). У меня есть вид Controller B
, где есть некоторое взаимодействие с пользователем и кнопка под названием "Отправить". Я надеюсь, что в действии этой кнопки будет вызван метод, который может быть выполнен только из ViewController A, который является методом из делегата службы A. Могу ли я узнать, есть ли какой-нибудь хороший способ добиться этого? Я новичок в Swift. Если есть лучший способ сделать это, я тоже хотел бы знать. Спасибо.
1 ответ
Лучший способ использовать Delegate
От ViewControllerA
в ViewControllerB
, Значит ViewControllerB создаст протокол и делегирует свойство. ViewControllerA будет соответствовать методам протокола и реализует обязательный и необязательный (может делать) метод. При действии ViewControllerB send вы на самом деле вызовете метод протокола, используя свойство делегата. Который будет вызывать реализованный метод ViewControllerA, где вы можете вызвать любой метод.
Протокол:
protocol ViewControllerBDelegate: class {
func didSendClicked(sender: UIbutton)
}
Делегат собственности:
@property (weak) id<ViewControllerBDelegate> delegate;
Соответствующий протокол ViewControllerA:
@interface ViewControllerA () <ViewControllerBDelegate>
@end
Реализуйте метод в viewControllerA:
- (void)didSendClicked:(UIButton *)sender {
// do stuff
}
Настройки делегатов для viewControllerA
viewControllerB.delegate = viewControllerA(ref)
Вызов метода делегата из viewControllerB
delegate?.didSendClicked(self)
Решение: 2 вы можете использовать NSNotificationCenter
для того же обратного вызова.