在Objective-C
我们可以从string创建类并初始化其对象以推送导航堆栈,如:
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创建的类初始化对象?
更新
在Martin的评论链接的帮助下,我能够解决Nib / XIB的问题。但是如何才能为stoyboard做到这一点?
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
我尝试删除&#39;作为ClassName&#39;从线和它的工作正常。 截至目前,使用笔尖和故事板推送视图控制器已完成。现在我希望它可以在没有这两者或框架的情况下推动。
这段代码很好,但是当它被推送时,它显示为空白和黑色:
let myVC = ClassName.init()
self.navigationController?.pushViewController(myVC, animated: animate)
解决方案是什么?如果它的框架是init,那么在这种情况下我们如何实现呢?
以上所有情况我都在检查,因为我想为viewcontroller的推/弹操作实现一个函数。
谢谢!