it-swarm.com.ru

Раскадровка не будет обновляться в симуляторе

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

У кого-нибудь есть какие-либо идеи?

16
user1892540
  1. Удалить приложение на симуляторе.

  2. Чистый

  3. Элемент списка

  4. Построить и запустить

Используйте NSLog(@"") в вашем контроллере для проверки выполнения кода.

21
T0m_Twt

Я просто потратил как минимум 6 часов на это. У меня есть решение, но я также отправил заявку в службу технической поддержки Apple, чтобы попытаться получить больше информации о причине и правильном решении.

Просто удалите ссылки на файлы раскадровки и добавьте их обратно в ту же группу файлов.

Это, кажется, включает файлы раскадровки обратно в комплект приложения, сгенерированный во время сборки (который можно увидеть в

DerivedData/APPNAME/Build/Products/Debug-iphonesimultator/APPNAME.app 

Отсюда я вижу, как мои изменения отражены в раскадровках, как и ожидалось.

PS - Вы используете локализацию вообще? Я был.

12
Brenden

Я потерял 2 часа на это.

Решение было очень простым: удалите приложение, выключите iPhone 5S (iOS 7.1.1) и снова включите его.

6
xaphod

Когда вы включаете локализацию, xcode перемещает файл раскадровки в папку локализации (например, Base.lproj/name.storyboard). Когда вы создаете и запускаете проект на симуляторе, xcode копирует name.storyboard в "производные данные" /Base.lproj/name.storyboard, но предыдущий, созданный до локализации "производные данные"/имя. раскадровка все еще существует. В этом случае симулятор использует файл, который может быть найден проще, т.е. симулятор использует старый файл "outputData" /name.storyboard для работы.

Решение: Просто переименуйте файл раскадровки в навигаторе и в целях/общем.

2
wtorsi

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

Удалите несколько копий с одним и тем же именем, перезапустите XCode и откройте самую последнюю копию. Чрезвычайно странно, но я, вероятно, теперь буду использовать BitBucket или GitHub вместо того, чтобы бросать их на флешку.

1
methodcalls

Я обнаружил, что удаление и добавление файла раскадровки обратно не работает в моем случае, а также имеет побочные эффекты, такие как автоматическое добавление основной записи пера в файл plist приложения (что впоследствии приводит к тому, что приложение не запускается в симуляторе iPhone).

Я не хочу пытаться удалить приложение из симулятора, так как у меня есть много файлов в каталоге Document приложения.

Наконец я нахожу другой способ, который работает хорошо: просто удалите файл "/ Users/$ username/Library/Application Support/iPhone Simulator/7.1/Applications/$ app/$ yourapp.app". Файлы в каталоге Documents остаются нетронутыми.

(Я также локализовал свою раскадровку.)

0
Yingpei Zeng

Я также получаю это при использовании локализованных раскадровок - Выполнить в XCode просто отказывается устанавливать последнюю версию скомпилированной раскадровки. Я думаю, что это как-то связано с тем, как Run копирует измененные ресурсы на устройство - это делает это иначе, чем другие формы установки приложения на устройстве.

Самый быстрый способ обойти это без удаления приложения и потери данных это:

  • Создайте Архив построить в Xcode
  • Экспортируйте это для Adhoc развертывания
  • Дважды щелкните созданный файл IPA, чтобы добавить его в iTunes.
  • На странице устройства в iTunes принудительно вставьте обновить в это приложение.

Чтобы iTunes увидела, что у вас есть новая версия, ваше приложение номер сборки необходимо будет увеличить (если вы этого еще не сделали) перед созданием архива.

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

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

0
Rob Glassey

Я обнаружил, что то же самое произошло с Xcode 6.1.1, если я скопировал проект; новый проект, запущенный в симуляторе, фактически все еще отражал проект старый, оригинальный.

В моем случае проблема заключалась в том, как была задана область по умолчанию для производных данных (по сути, это место, куда бинарные файлы идут для сборки). Мой был установлен на наследство, и симулятор использовал неправильный проект, даже после очистки. Решением было перейти к Предпочтения -> Местоположения, нажмите Дополнительно и измените местоположение с Устаревшее на - nique.

0
Ken

Удаление

~/Library/Developer/Xcode/derivedData /

работал на меня!

0
Soohee Song

Раскадровка на симуляторе была такой, какой она должна была быть. Раскадровка на устройстве не будет обновляться. Мне пришлось удалить приложение с iPhone, а затем повторно запустить его на устройстве, чтобы раскадровка обновилась на устройстве. К счастью для меня, это были только тестовые данные, но я использовал Auto-Layout для одного вида и вернулся к руководству. Я думаю, что это вызвало проблему для меня.

0
user1936561