是否可以访问和运行另一个类的特定方法/函数,该方法/函数可以在应用运行时动态更改?
我会尽量简化问题。
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/