Проблема компоновки с NSSplitView внутри NSTabView - отсутствующие ограничения
Я сделал очень простой фиктивный проект, чтобы проиллюстрировать мою проблему (используя Xcode 8.1 на 10.12.1). У меня есть раскадровка с NSTabViewController с 2 вкладками, одной из которых является NSSplitViewController. Хотя все, кажется, работает отлично, я вижу следующее предупреждение во время выполнения:
"TabSplitViewDummy [3615: 89221] [Layout] Обнаружены отсутствующие ограничения для <_NSSplitViewItemViewWrapper: 0x6000001a0d20>. Его нельзя разместить, поскольку недостаточно ограничений для полного определения размера и источника. Добавьте отсутствующие ограничения или установите translatesAutoresizingMaskIntoConintsints Y = будет сгенерировано для вас. Если это представление выложено вручную в macOS 10.12 и более поздних версиях, вы можете не вызывать [super layout] из переопределения. Установите точку останова на DETECTED_MISSING_CONSTRAINTS для отладки. Эта ошибка будет зарегистрирована только один раз."
Я попытался установить translatesAutoresizingMaskIntoConstraints=YES для всех представлений, а также установить ограничения - ничего не получалось. Пока я узнал только 3 вещи:
- когда я меняю порядок вкладок, чтобы разделенное представление не было видно при запуске, предупреждающее сообщение не появляется
- когда я удаляю вид вкладки и делаю содержимое окна на разделенный вид, предупреждающее сообщение не появляется
- когда я устанавливаю символическую точку останова на DETECTED_MISSING_CONSTRAINTS, он получает удар 6 раз, поэтому я предполагаю, что 6 пропущенных ограничений
Я уже потерял дни с этим, что мне здесь не хватает?
Большое спасибо за вашу помощь!!!
1 ответ
Почти потеряв его, я наконец нашел решение. На тот случай, если кто-то еще столкнется с той же проблемой, вот что сработало для меня: перейдите к раскадровке и подключите выход "view" NSTabViewController к "No Shadow Tab View". Вот и все. Вы ожидаете, что XCode сделает это, когда вы устанавливаете новый NSTabViewController, но это не так. Я не буду полностью понимать, почему, но каким-то образом это портит Autolayout NSSplitView. Если вы можете объяснить это подробно, пожалуйста, сделайте это в комментариях.