Почему внутри Main.storyboard возникают внутренние несоответствия и как мне обойти это?

Я открываю проект из XCode 8 на Sierra macOS, который вчера работал без проблем.
Теперь я вижу:

Документ "Main.storyboard" имел 2 внутренних несоответствия, которые были найдены и отремонтированы. Это может быть связано с работой SCM, такой как сращивание. Сохраните документ, чтобы исправить несоответствия.

ошибки раскадровки

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

Кто-нибудь знает причины, по которым это происходит?

Ответ 1

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

Мне пришлось закрыть XCode несколько раз, чтобы, наконец, дойти до этого. Я взломал файл main.storyboard с помощью текстового редактора. Я пробовал всевозможные вещи.

Наконец, я больше думал о сообщении об ошибке.

Что было " SCM" в этом исходном сообщении? Я предположил, что это модуль управления версиями, потому что он упоминал о слиянии.

Затем я заметил, что столица "M" рядом с моим файлом main.storyboard слева, где перечислены файлы проекта. Это выглядит так:

файлы проекта изменены

Я догадался, что показывал мне, что Source Control говорил, что это "М", так что я щелкнул правой кнопкой мыши по файлу main.storyboard и сказал ему отказаться от изменений.

Он выглядит следующим образом:

откат изменений

После этого мне снова удалось открыть раскадровку. Странно то, что однажды я даже смог запустить проект, пока он был в поврежденном состоянии.
Взял много фишек, чтобы сделать это.

XCode Devs должны это исправить. Это ужасно.

РЕДАКТИРОВАТЬ 2 Тьфу! Что за трата времени. Каждый раз, когда я снова просматриваю раскадровку, SCM объединяет что-то, и, наконец, я вижу что-то, что связано с ошибкой. это выглядит как:  просмотр большого стека

О, конечно, возможно, что-то, что я сделал с InterfaceBuilder, и это моя вина и все, но ужасный ужасный глупый XCode позволил мне это сделать.

Изменить 3 Хорошо, я заметил, что он считает, что этикетка растянута. Но, это элемент управления источником, который автоматически делает это. Интересно, будет ли весь мой проект тостом? label имеет огромную высоту

Изменить 4

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

Часть корневой причины

Проблема заключалась в том, что по какой-то неизвестной причине конкретная метка, помещенная внутри стекового представления, пошла бы на брейкеры и попыталась бы достигать 9 000 000 000 единиц по высоте.

Один способ исправить

Взгляните на второе изображение в этом посте. Он показывает, где я нажимаю правой кнопкой мыши файл main.storyboard. Я действительно видел, как ярлык снова сходит с ума с огромной высоты, когда интерфейс Builder попытался отобразить раскадровку, а затем я смог

  • выберите "Открыть с помощью внешнего редактора"
  • Найдите размер нарушения (я искал 9 000 000)
  • измените размер файла и сохраните его, а затем заново построите конструктор интерфейса.

Конфликтные ограничения

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

Ответ 2

У меня была эта же проблема (5 внутренних несоответствий) и нашел решение, подобное @daylight, но я подумал, что могу добавить больше цвета.

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

Проблема:

  • на Xcode 8, Xcode бесшумно менял раскадровку (можно отслеживать изменения через git). Некоторые из этих изменений добавили смешные высоты ярлыкам в stackviews (согласно @daylight). Предположительно xCode пытался + не удалось автоматически разрешить конфликты макета. Эти изменения вызвали/связали с диалогом в этом вопросе, что вызвало сбой.

  • Как только xcode добавляет эти изменения, единственный способ получить доступ к файлу - это открыть его как источник.

  • В самый первый раз, когда Xcode 8 открывает раскадровку + сразу после того, как он просит вас выбрать устройство просмотра, я смог получить графический интерфейс, который дал мне возможность проверить его.

  • Я не смог исправить проблемы, просто отменив/исправляя изменения, поскольку Xcode затем сделает их снова.

Решение:

  • Тщательно отслеживая + ревертируя изменения, сделанные с помощью git, и, глядя на сумасшедшие высокие номера высот, я смог проследить проблемы в stackviews в одном представлении. Я извлек весь свой контент из этих представлений в стеке (в этой краткой возможности, когда я мог графически открыть доступ к графическому редактору) + удалил их. Задача решена. Теперь мне просто нужно переформатировать эту точку зрения, которая в моем случае не слишком много работает.