在Swift中从字符串推送ViewController

时间:2015-07-28 14:39:00

标签: ios swift

我有一个类'MyViewController.swift'和一个字符串“MyViewController”。如何从字符串创建该viewController的实例并将其推送到导航控制器中?

我已经检查了这个答案(How to create an object depending on a String in Swift?),但它似乎没有做到这一点。

1 个答案:

答案 0 :(得分:-2)

假设您正在使用故事板,您可以扩展UIStoryboard,如:

class func mainStoryboard() -> UIStoryboard {
    return UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
}

class func myViewController(s: String) -> UIViewController? {
    return mainStoryboard().instantiateViewControllerWithIdentifier(s) as? UIViewController
}

然后你可以像

一样使用它
myVC = UIStoryboard.myViewController("controller")
myVC.view.frame = view.frame

view.addSubview(myVC.view)
addChildViewController(myVC)
myVC.didMoveToParentViewController(self)

let vc = getVC("controller")
vc!.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(vc!, animated: true, completion: nil)

更新: 如果您不使用故事板,可以将以下内容添加到控制器中:

func getVC(s: String) -> UIViewController {
    switch s {
    case "myVc":
        return MyVC() as! UIViewController
    default:
        // handle default case
    }
}