2015-02-11 2 views
5

Когда у вас есть UITableView внутри UIViewController, вы должны отключить флаг автоматическиAdjustsScrollViewInsets (либо в редакторе кода или раскадровки), чтобы получить верхнее пространство, чтобы избежать верхнего бара. У меня теперь есть дочерний UIViewController, который использует «встроенную» секцию внутри дочернего представления, которая содержит UITableView. Я вижу «пространство» (желтая область), но я очистил все флаги во встроенном UIViewController и даже очистил флаг вручную в файле prepareForSeque, но пространство остается. Нужно ли что-то еще делать, или это ошибка?automaticAdjustsScrollViewInsets не работает во встроенном UITableViewController с UITableView

enter image description here

+0

Эта желтая область является частью встроенного VC или родительского VC? – orkenstein

+0

Вложенное, это пустое пространство в верхней части таблицы. – ahwulf

+0

Какова структура таблицы? Проверьте это в 'viewDidAppear'. – orkenstein

ответ

6

Если бы этот вопрос сегодня утром.

Оказывается, что вам нужно, чтобы снять automaticallyAdjustsScrollViewInsets свойства от parentViewController вместо ребенка, когда вы используете режим контроллера встроенного вида, как вы сделали.

Вот моя структура пользовательского интерфейса:

ParentViewController имеет вид контейнера, которые указывают на ChildViewController (подкласс UITableViewController).

Снимите флажок automaticallyAdjustsScrollViewInsets в ChildViewController: не работает

снимите флажок automaticallyAdjustsScrollViewInsets в ParentViewController: работает!

0

Я боролся с этим в течение нескольких часов, пока не понял, что ответ от пользователя @ user3188985 был тем, что происходило, хотя решение не сработало для меня.

Это потому, что у меня есть два контроллера вида, каждый из которых содержит scrollViews, и я хочу, чтобы он настраивался, а другой нет, что делать?


Ну если отключить автоматическую регулировку в родительском контроллере, то вам необходимо вручную настроить одну Scrollview, что вам нужно, например, установка содержимого. Установка в соответствующих случаях.


Если оставить на автоподстройки в родителе, я обнаружил, что манекен Scrollview с нулевой рамой, скрытые, все свойства прокрутки установлено значение NO, и если перед вашим видимым/включен Scrollview в иерархию представления контроллера дочернего представления, затем он получит автоматическую настройку и оставит видимый вид scrollView в одиночку.

В качестве альтернативы, вы можете просто иметь вид сверху, который будет отображаться сверху, с помощью прокрутки без прокрутки и иметь в нем еще один scrollView с включенной функцией прокрутки, что позволит достичь того же, что и «манекен».


Что вы можете видеть здесь, является то, что автоматической регулировка флаг только контроллер представления родителя учитывается, но своим собственная иерархия зрения контроллера проходятся найти scrollViews для регулировки в каждом содержащемся контроллере. Это просто нежелательное поведение UIKit.Было бы хорошо, если бы каждый пользовательский контроллер автоматически настраивал параметры, прежде чем принимать решение об этом:/

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