В документации определение гласит:
var storyboard: UIStoryboard?
Раскадровка, из которой был создан контроллер представления.
Вы правы, считая, что var storyboard
является свойством UIViewController
. Причина вашего замешательства в том, что ваша ментальная модель предполагает, что, поскольку UIViewController
имеет ссылку на storyboard
, она должна владеть ею. storyboard
- это просто ссылка на раскадровку, которую загрузил ваш UIViewController
. Это следует рассматривать скорее как восходящие, а не нисходящие отношения.
На практике, как UIViewController
, распространенным случаем использования является запрос вашего storyboard
на создание экземпляров других контроллеров UIViewController, которые мы затем можем представить:
let viewControllerToPresent = storyboard?.instantiateViewController(withIdentifier: "presentedController")
present(viewControllerToPresent, animated: true, completion: nil)