ios - 在另一个类中调用函数的最佳方式是什么? ( swift )

标签 ios swift function class sprite-kit

所以,我有一个关于 Swift 中的类和函数的相当简单的问题。

假设我用 SpriteKit 制作了一个应用程序。我有一个 GameScene (SKScene)、一个 GameViewController (UIViewController) 和一个 GameViewController 的主 Storyboard。

如果我想在我的 GameScene 顶部有一个按钮,我会将一个按钮 IBOutlet 从主 Storyboard连接到 GameViewController。但是我该如何设置它,以便在我触摸按钮时可以调用 GameScene 中的函数?

我必须通过委托(delegate)来处理这个问题还是有更简单的方法?

编辑:

详细来说,我想调用的函数是:

  func resetScene(){
        self.removeAllActions()
        self.removeAllChildren()
    }

我试图将其声明为 class func 但不知何故它并不完全有效。

最佳答案

基本上有四种从其他类调用函数的方法。

  1. 类的实例。如果您有类 Object 的实例,您可以对该实例调用 Object 的 方法,例如 myObject.buttonTapped()

  2. 委托(delegate):为类A创建一个协议(protocol),并在协议(protocol)中声明方法。 A 类必须有一个协议(protocol)实例。在 buttonTapped 方法中调用该方法,例如 delegate.notifyButtonTapped()。 B类中,遵守协议(protocol),实现notifyButtonTapped()方法。

  3. 通知:通过 NotificationCenter 从类 A 和 addObserver 发布通知到类 B 以获取该通知。检查this链接以获取更多信息。

  4. 闭包/ block :在这种情况下,闭包不是最好的解决方案,它们可能相当复杂,难以完全理解

你可以在这里和代表团一起去。检查this link 来自 rw 的澄清。

关于ios - 在另一个类中调用函数的最佳方式是什么? ( swift ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42457588/

相关文章:

ios - 如何通过按下按钮从数组中随机快速打印一个简单的引号?

javascript - 为每个元素运行多次的 JQuery 函数

ios - 如何在 iOS 中创建带下划线的分段控件

ios - Central 正在为 Peripheral 的写请求获取错误响应,响应有点晚

ios - 从 Braintree ios SDK 中删除邮政编码

swift - 删除多个 UICollectionView 单元格时布局会发生什么?

iphone - iOS 7 makeKeyAndVisible 不工作

swift - 实例化 NSFetchedResultsController 因未捕获的异常而终止

javascript - 简单的函数返回我在 JavaScript 中没想到的数字

传递函数参数时的 C++ 执行顺序