Swift - как инициализировать объект класса, созданного с помощью NSClassFromString
В Objective-C
мы можем создать класс из строки и инициализировать его объект для добавления в стек навигации, например:
Class myClass = NSClassFromString("ClassString");
id myObject = [[myClass alloc] initWithNibName:"ClassString" bundle:nil];
[self.navigationController pushViewController:myObject animated:YES];
Какой будет эквивалентный код в swift?
В Swift я пробовал:
let ClassName = NSClassFromString("ClassString")
let myObject = ClassName.init(... ) // <- here I'm unable to init with nib name
Как можно инициализировать объект классом, созданным из NSClassFromString?
ОБНОВИТЬ
С помощью ссылки Мартина в комментарии я могу исправить проблему с Nib/XIB. Но как это можно сделать для стойборда?
let mainStoryboard:UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let myVC = mainStoryboard.instantiateViewController(withIdentifier: "SomeID") as ClassName // <- here I'm getting error
self.navigationController.pushViewController(myVC, animated: true)
ОБНОВЛЕНИЕ 2
Я попытался удалить "как ClassName" из строки, и он работает нормально. На данный момент продвижение контроллера представления с помощью пера и раскадровки завершено. Теперь я хочу, чтобы это было без обоих или с рамкой.
Этот код просто отлично, но когда его толкают, он выглядит пустым и черным:
let myVC = ClassName.init()
self.navigationController?.pushViewController(myVC, animated: animate)
Каково решение? Если его инициализация с фреймом, как мы можем добиться этого в этом случае?
Все вышеперечисленные условия я проверяю, потому что хочу реализовать одну функцию для операции push / pop для viewcontroller.
Спасибо!