IOS 8: запуск экрана StoryBoard появляется черным [один файл XIB работает отлично]

Итак, я попытался создать раскадровую версию для моего приложения iOS 8, используя этот учебник

Однако, когда я запускаю приложение, я получаю только черный экран. Один файл screen.xib запуска запускается отлично, однако, когда я пытаюсь использовать раскадровку, он не работает.

Я попробовал раскадровку с помощью всего одного контроллера вида, но он все еще дает мне черный экран, поэтому я считаю, что проблема связана с файлами раскадровки в моей настройке. Любые идеи?

[XCode version 6.4]

EDIT: Я просто хочу уточнить, что экран запуска выглядит черным. Основная раскадровка сама по себе отображается правильно, когда приложение закончило загрузку

Ответ 1

Прочитайте учебник и протестируйте его, и он не говорит о двух вещах:

1: вам нужно добавить UIViewController в ваш файл .storyboard, а затем выбрать его как начальный контроллер.

2: Если вы хотите изменить не только экран запуска, вам нужно перейти к настройкам проекта и установить "Основной интерфейс" на соответствующий .storyboard.

После этого все, что вам нужно сделать, это отредактировать соединения UIButton/Label/etc с вашими классами ViewController.

EDIT:

Для пояснения вы можете установить UIView в качестве начального контроллера, выбрав его в соответствующем файле раскадровки, а затем откройте Инспектор атрибутов. Параметр "Исходный контроллер" находится в середине.

Ответ 2

Для пользователей, использующих UIImageView на экране запуска

Убедитесь, что вы используете имя изображения без расширения в инспекторе атрибутов.

Так, например, если ваш файл изображения имеет имя launcher.png, используйте только launcher как имя изображения.

Это покажет изображение как недействительное (?) в редакторе, но будет корректно отображаться при запуске на устройстве.

(Не спрашивайте меня, почему это работает так. Спросите Apple.)

введите описание изображения здесь

Ответ 3

Ни один из ответов не требует всех необходимых шагов, поэтому это исчерпывающее решение.

Раскадровка

Начните с создания LaunchScreen.storyboard. Xcode > File > New > File... > Storyboard > LaunchScreen.storyboard и добавьте его во все соответствующие цели.
В этой раскадровке создайте единый контроллер вида типа UIViewController. Сделайте все, что требуется вашему экрану запуска, затем выполните следующие действия:

  • LaunchScreen.storyboard > Показать инспектор файлов > Использовать в качестве экрана запуска
  • LaunchScreen.storyboard > Просмотреть контроллеp > Показать инспектор атрибутов > Контроллер начального представления
  • Проект > Общие сведения > Информация о развертывании > Основной интерфейs > LaunchScreen
    Повторите для [iPhone] и [iPad]
  • Проект > Общие > Значки приложений и изображения запускa > Файл экрана запускa > LaunchScreen
  • При правильной настройке ваш Info.plist должен иметь LaunchScreen.storyboard, без .storyboard в свойствах UILaunchStoryboardName и UIMainStoryboardFile:

    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UIMainStoryboardFile</key>
    <string>LaunchScreen</string>
    

Примечания:

  • Это несовместимо с наличием устаревших изображений для более старых устройств с использованием файла экрана запускa > Активы.
  • Обратите особое внимание на LaunchScreen.storyboard и Main.storyboard. Один используется для запуска, другой для точки входа в приложение. У обоих должно быть установлено Контроллер начального просмотра.

Ответ 4

В раскадровке, которую вы используете для запуска, убедитесь, что вы выбрали опцию Является ли контроллер начального представления для самого единственного контроллера представления, присутствующего в нем.

Ответ 5

I Belive У меня, возможно, была аналогичная проблема, которая требовала что-то отличное от вышеупомянутых ответов.

Я создал новый экран запуска в файле .storyboard, а затем, после того, как он не появился, я привел к появлению нового .xib файла, который все еще не появлялся при запуске приложения.

Я понял, что некоторые из изображений, которые у меня были на экране запуска, имели сборку Outlet для старого файла .swift. После удаления этого из LaunchScree.xib экран запуска работал нормально.

сломанная розетка

Обратите внимание на предупреждающий знак litte в ссылке на выход → Предупреждение

Ответ 6

Удостоверьтесь, что вы установили точку входа и в вашем общем контакте с информацией убедитесь, что у вас установлено значение для изменения размера от nib. Также убедитесь, что на вашей общей вкладке задана начальная точка. В информации о развертывании.

Надеюсь, что это поможет

Ответ 7

Слишком длинный путь, благодаря Apple! Я, наконец, обнаружил, что мне пришлось удалить фактический UIImageView в моем контроллере просмотра, а не только изображение, чтобы перейти на другое изображение. Попробовал переименовать изображения, заменив их разными способами, удалив кеши, удалив приложение с устройства, выполняя очистку перед зданием. Первоначальное изображение ушло от везде, насколько я мог видеть, но оно все равно появлялось. Наконец, я добавил новый контроллер UIImageView сверху в контроллер представления, и это заняло новое изображение. Затем я просто удалил старый UIImageView, и все было в порядке.

Ответ 8

Правильно ли установлен Основной интерфейс на "Основной" (имя раскадровки) в информации о развертывании?

Ответ 9

У меня был черный экран вместо моего всплеска после локализации моего приложения. В разделе "Локализация" инспектора файлов LaunchScreen.storyboard у меня был только один тик для одной локализации. Итак, я добавил галочку для второй локализации, и это исправило проблему.

Ответ 10

В решении используется имя изображения без расширения png.

Например, если ваш файл изображения называется "img.png", используйте только "img".

Это покажет изображение как недопустимое (?) в редакторе, но будет корректно отображаться при запуске.

Это происходит потому, что LaunchScreen.storyboard принимает только изображения внутри Assets.xcassets и способ ссылки на изображения внутри Assets.xcassets - это имя ресурса без расширения.

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