Я статические функции создания экземпляров контроллеров отображения, которые выглядят какSwift - Обратитесь к текущему типу класса в функции статического/класса
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 {
}
Но я не знаю, чтобы динамически относятся к типу объекта в статической/функции класса, и как есть это относится к подклассу, когда вызывается из подкласса. Это легко сделать, когда объект был экземпляр с type(of: object)
См http://stackoverflow.com/questions/33200035/return-instancetype-in-swift для возможного решения (но если данный ответ будет работать, это будет более простое решение). –