2015-04-10 4 views
7

У меня есть универсальный проект XCode (ObjC) для iPad и iPhone с подпроектом, который содержит раскадровку. Подпроект представляет собой статическую библиотеку, которая была добавлена ​​в основной проект. В этот подпроект входит пакет, содержащий бесценную раскадровку.XCode нет действительной скомпилированной раскадровки по пути

Когда я нажимаю определенную кнопку на приложение, необходимо раскартировать раскадровку;

[UIStoryboard storyboardWithName:@"UIControls.bundle/Config" bundle:nil]; 

Это отлично работает для iPhone (устройств и симуляторов), но всякий раз, когда я пытаюсь запустить проект Ан IPad (устройство или имитатор), я получаю следующее сообщение об ошибке;

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'There doesn't seem to be a valid compiled storyboard at path... 

Что это? Проект - универсальный проект, так почему iPad не может найти раскадровку?

+0

Попробуйте следующее: '[UIStoryboard storyboardWithName: @" UIControls.bundle/Config "bundle: [NSBundle mainBundle]];' – LoVo

+0

Нет, не повезло. – AlBirdie

+0

Вы пробовали использовать Config вместо пути? –

ответ

16

Чтобы ответить на мой собственный вопрос;

Эта ошибка появляется, когда цель расслоения не является универсальной. Итак, убедитесь, что в семействе целевых устройств в настройках сборки пакета установлено значение iPhone и iPad.

enter image description here

+0

Ваше решение отлично поработало - СПАСИБО !!! –

+0

Спасибо! Я с ума сходил с этого. – emix

+0

Где найти целевое семейство устройств в xcode 8.4 – vp2698

0

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

  1. Перейти к Цель проекта -> Info, а затем удалить KeyValue объект для ключа Main раскадровки имя файла базы и Основная база данных основного файла (iPad).
  2. Чтобы убедиться, что он полностью удален, перейдите в файл Info.plist и убедитесь, что объекты KeyValue там не существуют. Если они есть, то также удалять оттуда.
  3. Удалите ссылки на раскадровки из проекта Xcode.
  4. Добавить раскадровки обратно в проект, щелкнув правой кнопкой мыши по проекту в Xcode -> Добавить файлы в PROJECT_NAME, отметьте пункты копирования при необходимости, Создание групп и параметры целевого проекта.
  5. Установите раскадровки имена как для iPhone, так и iPad в Project Target -> Info, добавив ранее удаленные объекты KeyValue.

Отныне раскадровки работают как раньше!

0

Я пытался исправить эту проблему в течение 2 дней без надежды, пока не обнаружил, что он также не открыл файл базы данных sqlite, и после этого все повреждено после этого отказа БД. это было моим делом. И все это было проблемой памяти, даже если ARC установил массивы или словари после окончания nil;

+0

Я столкнулся с той же проблемой, каков возможный выход? – TechGuy

3

Просто наткнулся на это, переключив проект с универсальной цели на iPad и цель развертывания от iOS 9.0 до iOS 7.1.

Решение заключалось в том, чтобы отключить «Использовать классы размера» на раскадровке и только сохранить размеры для iPad.

Чтобы установить этот флажок, откройте раскадровку в навигаторе проекта, затем выберите команду «Инспектор файлов» (первый значок) и прокрутите вниз до заголовка «Интерфейс».

2

Я использовал раскадровки из обычая Cocoapod и терпело крах с

не кажется Там быть «действует скомпилирован раскадровка» на пути ...

В в документе Interface Builder я переключил значение «Builds for» с «iOS 7.0 или новее» на «Project Deployment Target» (который был 9.0), это сделало трюк для меня.

0

В нашем случае, мы управляли скриптом, который выполняется один из командной строки инструментов Xcode в, ibtool,

ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target 6.0 --output-format human-readable-text --compile ./Build/Release-iphonesimulator/TestApp.app/TestStoryboard.storyboardc ./Resources/TestStoryboard.storyboard --sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk 

и в то время как казалось работать без ошибок, он фактически произвел пустой storyboardc каталог. Обновление минимальной цели развертывания до 8.0 создало правильно построенный storyboardc с файлом Info.plist. Когда IBTool терпит неудачу/создает пустую директорию, я определенно думаю, что она на самом деле терпит неудачу и прекратит компиляцию, потому что в противном случае все выглядит так, как будто она правильно настроена и исправлена, на самом деле это не так.

Итак, решение для нас - это обновление минимальной цели развертывания нашего приложения.

0

Я имел эту проблему из-за изменения в раскадровки цвета Status Bar Style и не изменился в настройках проекта

0

Для меня решение является:

Я использовал этот код загрузить новый контроллер представления - [UIStoryboard storyboardWithName: @ "UIViewController" bundle: nil];

Сначала я попытался - [UIStoryboard storyboardWithName: @ "UIViewController" bundle: [NSBundle mainBandle]];

Но не повезло, в конце концов я изменил этот код:

[себе performSegueWithIdentifier: @ "Segue" отправитель: само];

И это помогло, может быть, оно может помочь кому-то тоже.

Смежные вопросы