Возможно ли получить доступ и запустить конкретный метод/функцию из другого класса, который может динамически изменяться по мере запуска приложения?Назначение функций из других классов в Swift
Я постараюсь максимально упростить проблему.
SelectionPage.swift
Выберите, какой класс должен быть выбран и доступен с помощью UIPickerView - 10 возможных выбора (class1, class2, class3, ..., Class10).
Class1.swift, Class2.swift ... Class10.swift
Каждый из 10 классов имеет единственный метод, который имеет точно такое же имя, но программируется по-разному:
func runOnUpdate() { }
GameSceneViewController.swift
Когда выбор сделан на SelectionPage, приложение переходит в GameSceneViewController, где конкретный selecte d функция выполняется каждый раз, когда функция обновления запускается:
override func update(currentTime: CFTimeInterval)
{
// run runOnUpdate() function here from selected class
}
Внутри функции обновления, я хотел бы выполнить функцию runOnUpdate() в зависимости от того, какой класс был выбран на SelectionPage. Это возможно? В идеале я хотел бы иметь возможность назначить конкретный класс/метод в:
так, что я могу получить доступ других функций.
Я искал ленивую копию, создавая делегаты для каждого из классов, @objc (Class1), массивы [AnyClass], typealias, глобальные переменные в structs, singletons и т. Д., Но я не могу понять как сделать эту работу.
Похоже, это довольно распространенная проблема, поэтому любая помощь будет принята с благодарностью! Заранее спасибо!
спасибо !!! Это решило проблему. Еще один вопрос ... возможно ли сделать переменную «foo» (установленную в экземпляр класса Foo()), доступную вне области действия viewDidLoad()? Мне интересно, есть ли способ очистить мой код, поэтому я не использую массивный оператор if, чтобы решить, какой класс foo должен быть назначен (Class1, Class2 и т. Д.)? Я попытался динамически установить NSClassFromString, но без везения. – user3221892