ios - 在 Swift 中分配来自其他类的函数

标签 ios swift

是否可以访问和运行另一个类的特定方法/函数,该方法/函数可以在应用运行时动态更改?

我会尽量简化问题。

SelectionPage.swift

使用 UIPickerView 选择需要选择和访问的类 - 10 种可能的选择(Class1、Class2、Class3、…、Class10)。

Class1.swift, Class2.swift, ... Class10.swift

这 10 个类中的每一个都有一个名称完全相同但编程方式不同的方法:

func runOnUpdate() { }

GameSceneViewController.swift

当在 SelectionPage 上进行选择时,应用会转到 GameSceneViewController,每次运行更新函数时都会运行特定的选定函数:

override func update(currentTime: CFTimeInterval) 
{ 
    // run runOnUpdate() function here from selected class
}

在更新函数中,我想根据在 SelectionPage 上选择的类执行 runOnUpdate( ) 函数。这可能吗?理想情况下,我希望能够在以下位置分配特定的类/方法:

    override func didMoveToView(view: SKView)

这样我也可以访问其他功能。

我研究了惰性实例化、为每个类创建委托(delegate)、@objc(Class1)、[AnyClass] 数组、typealias、结构中的全局变量、单例等,但我无法弄清楚如何使这项工作。

这似乎是一个相当普遍的问题,因此将不胜感激任何帮助!提前致谢!

最佳答案

您尝试委托(delegate)是正确的,因为在这种情况下您应该制定协议(protocol)和委托(delegate)。该协议(protocol)需要该功能。从那里将委托(delegate)属性设置为符合该协议(protocol)的类的实例,然后调用 delegate?.someFunction() 以调用给定对象上的函数。

class ViewController: UIViewController {
    var delegate: Updatable?

    override func viewDidLoad() {
        super.viewDidLoad()


        let foo = Foo()
        delegate = foo
        delegate?.runOnUpdate() // prints do something
    }
}


protocol Updatable {
    func runOnUpdate()
}

class Foo: NSObject, Updatable {
    func runOnUpdate() {
        println("do something")
    }
}

关于ios - 在 Swift 中分配来自其他类的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29232528/

相关文章:

iOS - Swift - 应用程序启动时屏幕调整大小

swift - "didSet"是否适用于数组中的元组?

ios - 如何使按钮的角变圆

ios - 使用 UIGraphicsGetImageFromCurrentImageContext 时如何修复因内存问题而终止?

iOS - 添加 UITabBarController 毁了我为 TableViews 定制的 AppDelegate.m

ios - XCode: ScrollView 不滚动

ios - 当手机上没有安装 Facebook 应用程序时,如何在 iOS 应用程序中将照片分享到 Facebook?

ios - iPad 搜索显示 Controller 从第二个单元格开始显示结果

java - Xpath 写入一个没有任何唯一 id 的元素

ios - 触摸特定位置时不会出现点击手势 - SpriteKit