Каковы преимущества использования раскадровок вместо файлов XIB в программировании iOS? - PullRequest
70 голосов
/ 31 января 2012

Каковы основные различия между использованием раскадровок и файлов XIB.

В частности, Каковы преимущества или недостатки использования раскадровки?

К сожалению, несмотря на то, что я провел немало исследований, все, что я смог найти на раскадровках, - это простые учебники, которые показывают вам, как настроить раскадровку, а не конкретную информацию, объясняющую, что это такое.

Ответы [ 12 ]

1 голос
/ 04 октября 2013

Ваше отношение к автоматическому макету также может повлиять на то, хотите ли вы использовать раскадровки. Используя xibs, вы можете включать или отключать автоматическую компоновку на основе .xib, что позволяет смешивать их в вашем приложении, в то время как раскадровки применяют ваш выбор ко ВСЕМ представлениям, которые они содержат.

0 голосов
/ 15 июня 2015

До iOS 7 раскадровки были довольно аккуратными, но не обязательными.Они представили столько проблем, сколько решили.iOS 7 сместила баланс в сторону раскадровок.

С iOS 8 и 9 это больше не вопрос: используйте раскадровки!

Основным недостатком раскадровки является то, что выВы полностью зависите от XCode, и вы можете потратить часы на то, чтобы крутить колеса на ошибках XCode.Но XCode стал намного лучше, и преимущества Storyboards теперь слишком многочисленны, чтобы их игнорировать.Прототипы ячеек табличного представления, классы размеров, поддержка автоматического макета и т. Д.

Некоторые советы:

  • Думайте о каждом раскадровке как о контейнере для контроллеров представления, которые принадлежат друг другу.Не думайте об этом как о грандиозном макете всего вашего приложения.
  • Возможно, вам потребуется более одной раскадровки
  • Сеги действительно полезны только для самых тривиальных вариантов использования - они великолепныдля этого.Но в приложении реального мира много переходов произойдет изнутри кода.И это нормально.
  • Напишите категорию, чтобы программно создавать экземпляры контроллеров представления из раскадровки, так что все, что вам нужно сделать, это позволить vc = SomeViewController.create (), где метод обрабатывает все детали (история извлечения)доска, вытащите контроллер представления из платы истории и т. д.).
...