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.

Спасибо!

0 ответов

Другие вопросы по тегам