UITableview изменяет высоту при отображении из разных UINavigationControllers ('More') - PullRequest
2 голосов
/ 12 декабря 2010

У меня проблема с tableView UITableViewController, изменяющего его положение кадра при представлении из UITabBarController, внутри UINavigationController.Рамка в порядке, когда отображается на обычной вкладке.Однако, если я переместлю и покажу UITableViewController из раздела «Больше», табличное представление переместится на ту же высоту, что и панель навигации (чего я не хочу).Когда я тестировал координаты фрейма во время выполнения между правильными и не правильными позициями, он показывал одно и то же (0.0, 0.0, 320.0, 411.0).Эта проблема возникает только после того, как я показал tableView в одном контроллере Nav, а затем он был перемещен и показан в другом, например, «VC» на вкладке «More» или VC «100» *

«Что происходит»здесь и как я могу это исправить?

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

Заранее спасибо!

alt text alt text

alt text

Ответы [ 5 ]

3 голосов
/ 20 декабря 2010

Мне удалось решить проблему.Оказывается, что когда вы перемещаете контроллер UITableView внутри UINavigationController в moreNavigationController, 44 пикселя добавляются к «верхним» переменным contentInset и scrollIndicatorInsets.Я не уверен, почему это происходит или почему эти 44 пикселя не удаляются, когда tableView покидает 'moreNavigationController', но вот ответ.Я вызываю эти две строки из viewWillAppear.

self.tableView.contentInset = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsMake(44.0, 0.0, 0.0, 0.0);
1 голос
/ 17 декабря 2010

UITableViewController имеет такое поведение, что он всегда пытается наилучшим образом соответствовать размеру экрана.UITableViewController идеально подходит для полноэкранного просмотра таблицы, но в остальном я рекомендую не использовать UITableViewController, а вместо этого самостоятельно реализовать tableViewControler, реализовав как источник данных, так и делегат.Некоторые установили resizeSubViews в NO и решили свою проблему, но я действительно советую воссоздать контроллер самостоятельно, что не так уж много работы.

0 голосов
/ 16 декабря 2010

Сначала возьмите UITableView в представлении, используя XIB.Затем добавьте панель навигации и измените размер таблицы.Вы получите то, что действительно хотите. alt text

Если проблема все еще не устранена, сообщите мне.

0 голосов
/ 17 декабря 2010

Если вы сможете отобразить свой код или сделать снимок экрана с вашими настройками, это будет намного проще. Исходя из моего опыта, создание экземпляров UITableViewController и их подключение в Интерфейсном Разработчике будет расширяться, чтобы заполнить весь экран.

Как вы подключаете его к вкладке "Дополнительно"? Если он находится на двух вкладках, и вы делаете НИЧЕГО динамического, проверьте метод класса UITableViewController viewDidLoad. Вам не нужно добавлять / удалять / повторно добавлять таблицу, если они не являются отдельными экземплярами.

Некоторые места для проверки:

  1. NSLog your tableHeaderView высота и положение
  2. NSLog your tableFooterView высота и положение
  3. Создайте backgroundView и назначьте его свойству backgroundView tableView, чтобы увидеть, каковы его истинные размеры и где они отображаются
  4. Проверьте, где находится начальная позиция просмотра UITableViewController.

Хотел бы я помочь больше. Хотелось бы увидеть ваши настройки / код.

0 голосов
/ 15 декабря 2010

Сброс свойства авторазмера файла пера представления таблицы.

Вы можете найти его внутри: Инструмент> Инспектор атрибутов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...