Swift - 如何初始化使用NSClassFromString创建的类的对象

时间:2016-12-02 13:06:18

标签: ios objective-c swift class object-initialization

在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

enter image description here

如何使用从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)

enter image description here

更新2

我尝试删除&#39;作为ClassName&#39;从线和它的工作正常。 截至目前,使用笔尖和故事板推送视图控制器已完成。现在我希望它可以在没有这两者或框架的情况下推动。

这段代码很好,但是当它被推送时,它显示为空白和黑色:

let myVC = ClassName.init()
self.navigationController?.pushViewController(myVC, animated: animate)

解决方案是什么?如果它的框架是init,那么在这种情况下我们如何实现呢?

以上所有情况我都在检查,因为我想为viewcontroller的推/弹操作实现一个函数。

谢谢!

0 个答案:

没有答案