Является ли свойство раскадровки атрибутом UIViewController? - PullRequest
0 голосов
/ 29 апреля 2018

Этот вопрос был поднят в другом посте, и я не мог их объяснить, что они имели в виду. Я был уверен, что раскадровка является атрибутом UIViewController, потому что в справочном документе Apple говорится, что раскадровка var в этой области гласит «Взаимодействие со раскадровками и сегментами». Справочник по Apple UIViewController, документ Один из комментариев гласил: «Раскадровка не является свойством или атрибутом ни UIViewController», и я надеялся, что это будет подробно изложено. Может ли кто-нибудь помочь, потому что теперь я не понимаю, правильно ли я читаю или использую справочные документы.

Исходный вопрос здесь: Оригинальный вопрос

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Класс UIViewController определенно имеет свойство раскадровки .

Ваш другой вопрос касается создания и инициализации контроллера начального представления. В контексте этого вопроса, я полагаю, имелось в виду, что класс UIViewController не имеет атрибута раскадровки, который он каким-то образом знает до создания экземпляра , который позволяет ему создавать себя из раскадровки.

Скорее, UIStoryboard устанавливает свойство storyboard в экземпляре UIViewController после его создания. Это необходимо для работы segues.

Обратите внимание, что свойство storyboard является необязательным и не будет иметь значения, если экземпляр не был создан раскадровкой.

0 голосов
/ 29 апреля 2018

В документации определение гласит:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...