Когда использовать раскадровку и когда использовать XIB

196

Есть ли какие-либо рекомендации относительно того, когда использовать раскадровки в проекте iOS и когда использовать XIB? Каковы плюсы и минусы каждого из них и какие ситуации им подходят?

Насколько я могу судить, использование сегментированных раскадровок не так уж и чисто, если у вас контроллеры представления выталкиваются динамическими элементами пользовательского интерфейса (например, выводами карты).

Affian
источник
4
Если вы хотите, чтобы ваше приложение включало также iOS4, у вас нет выбора: вы не можете использовать раскадровку в этом случае
AmineG
Отличный пример "невероятно устаревшего" QA на SO !!
Толстяк

Ответы:

174

Я широко использовал XIB и выполнил два проекта, используя раскадровки. Мои уроки:

  • Раскадровки хороши для приложений с небольшим или средним количеством экранов и относительно простой навигацией между представлениями.
  • Если у вас много представлений и много перекрестных переходов между ними, представление Раскадровка становится запутанным и слишком много работы для поддержания чистоты.
  • Для большого проекта с несколькими разработчиками я бы не использовал раскадровки, потому что у вас есть один файл для пользовательского интерфейса и вы не можете легко работать параллельно.
  • Возможно, стоит разбить большие приложения на несколько файлов раскадровки, но я этого не пробовал. Этот ответ показывает, как делать переходы между раскадровками.
  • Вам все еще нужны XIB: в обоих моих проектах раскадровки мне приходилось использовать XIB для пользовательских ячеек таблицы.

Я думаю, что раскадровки - это шаг в правильном направлении для реализации пользовательского интерфейса, и надеюсь, что Apple расширит их в будущих версиях iOS. Однако им необходимо решить проблему «одного файла», иначе они не будут привлекательны для более крупных проектов.

Если бы я запустил приложение небольшого размера и мог позволить себе совместимость только с iOS5, я бы использовал раскадровки. Во всех остальных случаях я придерживаюсь XIB.

henning77
источник
37
Две вещи. 1) Вы можете создавать собственные ячейки таблицы (они называют их ячейками-прототипами) в раскадровках и 2) Вы можете использовать несколько файлов раскадровки. Смотрите мой ответ здесь: stackoverflow.com/a/9610972/937822 для подробностей, как.
lnafziger
10
Спасибо. Я добавил ссылку на ваш ответ. Что касается пользовательских ячеек: Ячейки прототипа не работают для меня, потому что мне нужно повторно использовать пользовательские ячейки в нескольких представлениях. Поэтому мне пришлось вернуться к XIB.
henning77
2
Объединение раскадровок было значительно улучшено в Xcode 5.x, поскольку разметка XML была значительно упрощена.
Скотт Ахтен
Я думаю, что все зависит от морфологии проекта (прототип? Крупномасштабный проект? Уже разработан? И т. Д ...) Вот мои мысли polarios.co/2014/08/04/storyboard-xibs-co
Ганзоло
1
«Если у вас много представлений и много перекрестных переходов между ними, представление« Раскадровка »становится запутанным и слишком много работы, чтобы поддерживать чистоту». Я не согласен с этим, вам просто нужно определить правильный поток, чтобы сделать это, вы можете Избегайте большинства переходов с правильным дизайном.
Пабло А.