Как вызвать метод, исходящий из службы 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 для того же обратного вызова.

Другие вопросы по тегам