所以,我有一个关于 Swift 中的类和函数的相当简单的问题。
假设我用 SpriteKit 制作了一个应用程序。我有一个 GameScene (SKScene)、一个 GameViewController (UIViewController) 和一个 GameViewController 的主 Storyboard。
如果我想在我的 GameScene 顶部有一个按钮,我会将一个按钮 IBOutlet 从主 Storyboard连接到 GameViewController。但是我该如何设置它,以便在我触摸按钮时可以调用 GameScene 中的函数?
我必须通过委托(delegate)来处理这个问题还是有更简单的方法?
编辑:
详细来说,我想调用的函数是:
func resetScene(){
self.removeAllActions()
self.removeAllChildren()
}
我试图将其声明为 class func
但不知何故它并不完全有效。
最佳答案
基本上有四种从其他类调用函数的方法。
类的实例。如果您有类 Object 的实例,您可以对该实例调用 Object 的 方法,例如 myObject.buttonTapped()。
委托(delegate):为类A创建一个协议(protocol),并在协议(protocol)中声明方法。 A 类必须有一个协议(protocol)实例。在 buttonTapped 方法中调用该方法,例如 delegate.notifyButtonTapped()。 B类中,遵守协议(protocol),实现notifyButtonTapped()方法。
通知:通过 NotificationCenter 从类 A 和 addObserver 发布通知到类 B 以获取该通知。检查this链接以获取更多信息。
- 闭包/ block :在这种情况下,闭包不是最好的解决方案,它们可能相当复杂,难以完全理解
你可以在这里和代表团一起去。检查this link 来自 rw 的澄清。
关于ios - 在另一个类中调用函数的最佳方式是什么? ( swift ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42457588/