我有一个类'MyViewController.swift'和一个字符串“MyViewController”。如何从字符串创建该viewController的实例并将其推送到导航控制器中?
我已经检查了这个答案(How to create an object depending on a String in Swift?),但它似乎没有做到这一点。
答案 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
}
}