2017-02-05 7 views
2

Я использую ContainerView для совместного просмотра вида среди различных ViewControllers в приложении iOS. Это работает по большей части, за исключением TabViewController, где он создает дополнительный пустой элемент табуляции. Я прикрепил скриншот из раскадровки, где вы можете увидеть 4 Отчета о взаимоотношениях и 1 Вставить список Segue в контур документа. Насколько я могу судить, соединение Embed Segue для TabViewController анализируется (/ confused) как соединение 5-го отношения и, таким образом, элемент табуляции. Учитывая, что отношения & Встраивать соединения Segue в раскадровку выглядят одинаково (кроме немного отличающегося значка), и что они отображаются в списке друг друга в контуре документа, я вижу, как может произойти эта ошибка.ContainerView на TabController создает фантомную вкладку

Чтобы компенсировать ошибку, я использовал настройку tabItem titlePositionAdjustment для центровки 4-х легированных вкладок в интерфейсе. Проблема в том, что я могу только компенсировать значки вкладки/метки, но не сами кнопки. Кнопки контроллера 5-полосной панели, по-видимому, находились в фиксированном положении, независимо.

Я надеюсь, что кто-то еще там столкнулся с этой проблемой и может предложить решение или лучший способ смягчить проблему.

Спасибо!

enter image description here

enter image description here

+0

Можете ли вы объяснить больше, почему вам нужен вид контейнера и как вы его используете? Я подозреваю, что будет легче найти другое решение для этого. – pbasdf

+0

Да, конечно. Итак, продукт - музыкальное приложение. (Earbits Music Discovery в магазине приложений). У нас есть небольшой мини-плеер, который мы хотим видеть в качестве подзаголовка на всех экранах. Я провел некоторое исследование о том, как лучше всего использовать представление с несколькими контроллерами представлений и контейнером, к чему я пришел. Вот один из следующих руководств: https://spin.atomicobject.com/2015/07/21/ios-container-views/ – vfxdrummer

+2

Спасибо. Не могли бы вы добавить представление контейнера в контроллер просмотра дома, просмотра, воспроизведения и т. Д., Когда выбрана их вкладка? – pbasdf

ответ

1

Ok -

pbasdf послал меня в правильном направлении. В конце я добавил viewContainer к каждому из 4 представлений, связанных с моим tabView, с EmbedSegue для общего представления.

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

Итак, у меня есть рабочий tabViewController с 4 кнопками, расположенными правильно по умолчанию, а также встроенный контейнерный вид над ним.

+0

Просто обновление. Мое исправление для этого не закончилось. Поскольку представление, которое я добавляю в качестве подзадачи TabView, принадлежит одному из его контроллеров представления, оно нарушает правильную иерархию представлений. Это вызывает следующее исключение: UIViewControlHierarchyInconsistency. Таким образом, я до сих пор не знаю, как правильно использовать представления контейнера в контроллере табуляции. – vfxdrummer