斯威夫特 4.2。
在下面声明一个扩展。
extension UIStoryboard {
func instantiateVC(withIdentifier identifier: String) -> UIViewController? {
// "identifierToNibNameMap" – dont change it. It is a key for searching IDs
if let identifiersList = self.value(forKey: "identifierToNibNameMap") as? [String: Any] {
if identifiersList[identifier] != nil {
return self.instantiateViewController(withIdentifier: identifier)
}
}
return nil
}
}
在任何地方使用这样的方法:
if let viewController = self.storyboard?.instantiateVC(withIdentifier: "yourControllerID") {
// Use viewController here
viewController.view.tag = 0; // for example
}
或者
if let viewController = UIStoryboard(name: "yourStoryboardID", bundle: nil).instantiateVC(withIdentifier: "yourControllerID") {
// Use viewController here
viewController.view.tag = 0; // for example
}
将“yourControllerID”替换为您的控制器 ID。