【发布时间】:2016-12-30 14:59:26
【问题描述】:
我有静态函数来实例化看起来像的视图控制器
class AController: UIViewController {
static func instantiate() -> AController {
let storyboard = UIStoryboard(name: "AController", bundle: nil)
let controller = s.instantiateInitialViewController() as? AController
return controller!
}
}
class BController: UIViewController {
static func instantiate() -> BController {
let storyboard = UIStoryboard(name: "BController", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as? BController
return controller!
}
}
我有一堆,所以我想把它们弄得更干净:
class MYViewController: UIViewController {
class func instantiate() -> self.type {
let storyboard = UIStoryboard(name: "\(self.type)", bundle: nil)
let controller = storyboard.instantiateInitialViewController() as? self.type
return controller!
}
}
class AController: MYViewController {
}
class BController: MYViewController {
}
但我不知道在静态/类函数中动态引用对象的类型,以及如何在从子类调用时让 this 引用子类。一旦使用type(of: object) 实例化了一个对象,就很容易做到
【问题讨论】:
-
请参阅stackoverflow.com/questions/33200035/… 以获得可能的解决方案(但如果给定的答案有效,那么这将是一个更简单的解决方案)。
标签: swift class static subclass instantiation