如何调用来自服务的方法ViewController A在ViewController B的按钮中委托?

时间:2016-09-04 09:40:04

标签: swift multipeer-connectivity

我已经实现了ViewControllerA,它也是一个服务的代理(基本上是多重连接)。 我有一个视图Controller B,其中有一些用户交互和一个名为“发送”的按钮。 在这个按钮的操作中,我希望它将调用一个只能从ViewController A执行的方法,这是一个来自服务A委托的方法。 我可以知道我是否有任何好办法实现这一目标?我是Swift的新手。如果有更好的设计方法,我也想知道。谢谢。

1 个答案:

答案 0 :(得分:0)

使用DelegateViewControllerAViewControllerB的最佳方式。意味着ViewControllerB将创建协议和委托属性。 ViewControllerA将符合协议方法,并将实现必需和可选(可以)方法。在ViewControllerB发送的操作上,您将实际使用delegate属性调用协议方法。这将调用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进行相同的回调。