Ссылка раскадровки в Xcode, где мы должны ее использовать?

В Xcode7 beta есть один новый элемент управления, названный Storyboard Reference. Ниже представлен его образ.

enter image description here

Он имеет свое описание как

Предоставляет местозаполнитель для контроллера вида во внешнем раскадровке. Segues, подключенные к этому заполнителю, будут создавать экземпляр управляемого контроллера представления во время выполнения.

Итак, вопросы:

  • В каких ситуациях мы должны использовать это?
  • Используется ли это для подключения двух контроллеров представления раскадровки через segue?
  • Этот подход используется для замены VC другого раскадровки программно?
  • Будет ли он работать с более старой версией iOS (до iOS 9)?

Ответ 1

ОБНОВЛЕНИЕ (6 января 2016 года). Я просто хочу быстро упомянуть, что ссылки на Storyboard очень просты и помогут вам использовать раскадровки гораздо более чистым и удобным для пользователя способом. Хороший вариант использования для него, например. a UITabBarController с несколькими вкладками. Просто создайте одну раскадровку для каждой вкладки и в вашей Main.Storyboard ссылке на те отдельные раскадровки, используя ссылки раскадровки. Использование очень просто: после создания ссылки на Storyboard вам нужно указать только имя файла отдельной раскадровки, которое вы хотите связать и установить начальный контроллер представления в пределах этой отдельной раскадровки. Это!:)

Теперь следует исходный ответ, который я дал вопросу @YogeshSuthar.

  • Это можно использовать в тех случаях, когда вы используете несколько раскадровки в своем приложении. до сих пор вам нужно будет программно создавать контроллеры представлений из других раскадровки, кажется, что теперь вы можете просто использовать эту ссылку и создать свой segue в раскадровки, как с контроллерами представлений из одного и того же раскадровки.

  • да, вы подключаете один контроллер вида из текущей раскадровки с другим контроллером представления из другой раскадровки, и вы можете создать сеанс между этими двумя

  • да, это может быть использовано для замены кода, который ранее использовался для программного создания контроллеров представлений из других программ раскадровки.

  • [UPDATE спасибо to @AlexBasson] Ссылки раскадровки могут быть развернуты до iOS 8, OS X 10.10 и watchOS 1.

Ответ 2

Использование справочника раскадровки

Ну, другой ответ верен моим вопросам.

И я хочу опубликовать использование Storyboard Reference, которое используется для открытия контроллеров View из другой раскадровки через segue без написания кода.:)

Действия

  • Сначала создайте 1 новое имя раскадровки, все, что угодно (я назвал его NewStoryboard).
  • Поместите контроллер View (или любой контроллер просмотра) в NewStoryboard.
  • Дайте ему Storyboard ID (я дал newVC).

enter image description here

  1. Вернитесь к основной раскадровке.
  2. Перетащите элемент управления Storyboard Reference в эту раскадровку.
  3. Выберите элемент управления Storyboard Reference и выберите Attributes Inspector.
  4. Выберите новый раскадровки NewStoryboard.
  5. Укажите ссылочный идентификатор newVC (который вы использовали в раскадровке NewStoryboard).
  6. Подключите этот Storyboard Reference через segue из ViewController. Теперь он откроет этот VC через segue без написания кода.:)

enter image description here

Ответ 4

  1. Будет ли он работать с более старой версией iOS (до iOS 9)?

Ниже приведено обходное решение (проверено Xcode 8 и iOS 8.2):

  • В контроллере представления для вкладки добавьте представление контейнера, чей кадр занимает весь вид (добавьте ограничения, чтобы сделать это, если это необходимо).
  • Удалить встроенный контроллер просмотра, который автоматически добавлен вид контейнера.
  • Создайте ссылку на раскадровку и перетащите вставку segue из представления контейнера в эту ссылку.
  • Если вы еще этого не сделали, создайте раскадровку и назначьте ссылку на раскадровку.
  • В новой раскадровке вы можете имитировать внешний вид панели вкладок, выбрав первый контроллер просмотра и инспектор атрибутов в разделе "Имитированные показатели" → "Нижняя панель", выбрав панель вкладок, чтобы показать (например, прозрачный).

screenshot

Ответ 5

Просто протестированная ссылка на раскадровку в Xcode 7 с iOS 8, и она не удалась.

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0

Ответ 6

В последней документации iOS Developer Library для Xcode Releases добавлена ​​также эта заметка (Текущая версия: Xcode 7.2.1):

Ссылки на раскадровки теперь могут быть развернуты в iOS 8, OS X 10.10 и watchOS 1.

Это означает хорошие новости, но имейте в виду, что:

Ссылки на раскадровки не могут быть направлениями отношений segues до iOS 9.0

Итак, если вы знаете об этих двух пулевых точках, тогда вам хорошо идти:)

Ответ 7

Когда у нас есть большое приложение со слишком большим количеством экранов и модулей, Разделение раскадровки на несколько раскадровки по модулю является хорошим и удобный вариант. При использовании нескольких раскадровки, если вам нужно connect segue между viewControllers разного раскадровки, вы можете используйте этот элемент управления. Если вы используете этот элемент управления, вам не нужно делать такие вещи, как instantiateViewController и pushViewController и т.д. Вы можете просто подключить segue, выполнить segue, и если вам нужно, вы можете использовать prepareForSegue.

Обсудите все ваши вопросы:

  • В каких ситуациях мы должны использовать это? - Я думаю, вы нашли ваш ответ выше.

  • Используется ли это для подключения двух контроллеров представления раскадровки через segue? - ДА

  • Используется ли этот подход для замены VC другой раскадровки программно? - Ничего общего с кодированием при использовании этого управления

  • Будет ли он работать с более старой версией iOS (до iOS 9)? - Это может сработать, я не попробовать