我已经实现了ViewControllerA
,它也是一个服务的代理(基本上是多重连接)。
我有一个视图Controller B
,其中有一些用户交互和一个名为“发送”的按钮。
在这个按钮的操作中,我希望它将调用一个只能从ViewController A执行的方法,这是一个来自服务A委托的方法。
我可以知道我是否有任何好办法实现这一目标?我是Swift的新手。如果有更好的设计方法,我也想知道。谢谢。
答案 0 :(得分:0)
使用Delegate
从ViewControllerA
到ViewControllerB
的最佳方式。意味着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
进行相同的回调。