【发布时间】:2017-05-09 15:49:47
【问题描述】:
我正在尝试创建一个可用于初始化新实例的UIViewController 扩展。对于我项目中的每个视图控制器,我都有一个相应的故事板。
即
EditSomethingViewController.swift
EditSomethingViewController.storyboard
这是我目前所拥有的:
extension UIViewController {
static func initalize() -> UIViewController? {
let name = String(self)
let storyboard = UIStoryboard(name: name, bundle: nil)
return storyboard.instantiateInitialViewController()
}
}
但是这意味着当我使用它时,我仍然需要转换响应。
即
if let viewController = EditSomethingViewController.initalize() as? EditSomethingViewController {
// do something with view controller here
}
是否可以通过无需强制转换响应的方式创建扩展程序?
附言处理一个用 Swift 2.3 编写的旧项目,因此希望得到支持的答案。
【问题讨论】:
-
你能不能把它转换成函数,然后返回一个
EditSomethingViewController??
标签: ios swift generics uiviewcontroller swift-protocols