2014-11-09 83 views
0

我想将字符串转换为类类型。将字符串转换为Swift中的类类型

func getViewController(sbName: String, vcName: String, vcType: String) -> UIViewController{ 
    let classType = ????? //What to put here? 
    let sb = UIStoryboard(name: sbName, bundle: nil) 
    var vc = sb.instantiateViewControllerWithIdentifier(vcName) as classType 

    return vc 
} 

如果有人能带领我走向正确的方向,我将不胜感激!我有一种感觉,有办法做到这一点,但一直没能找到办法。

回答

2

如果你只担心Objective-C的基础类,你可以使用NSClassFromString("ClassName")

但是,你的方法是明确地返回的UIViewController。将vc转换为类类型不会对你有所帮助。

也许泛型方法将是你最好:

func getViewController<T: UIViewController>(sbName: String, vcName: String) -> T { 
    let sb = UIStoryboard(name: sbName, bundle: nil) 
    var vc = sb.instantiateViewControllerWithIdentifier(vcName) as T 
    return vc 
} 

类型然后可以从您试图此赋值给变量推断:

var viewController: MyViewController = getViewController("ASDF", "ASDF") 
+0

谢谢,这个固定我的问题太。你的答案应该被接受! – Pieter 2015-11-03 10:41:17