Использование UITableViewController с таблицей небольшого размера? - PullRequest
15 голосов
/ 21 октября 2008

При использовании UITableViewController метод initWithStyle: автоматически создает базовый UITableView с - согласно документации - "правильными размерами".

Моя проблема в том, что эти «правильные размеры» кажутся 320х460 (размер экрана iPhone), но я помещаю эту пару TableView / Controller в UINavigationController, который сам содержится в UIView, который сам составляет примерно половину высоты экран.

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

Итак, мой вопрос сводится к следующему: как правильно указать UITableViewController изменить размер его компонента UITableView до указанного прямоугольника?

Спасибо!

Обновление Я испробовал все предложенные здесь методы, но безрезультатно, но нашел одну интересную вещь: если я вообще откажусь от UINavigationController (что я еще не готов сделать для производства, но в качестве эксперимента), и добавьте табличное представление как прямое подпредставление включенного представления, которое я упомянул, размер кадра, заданный , соблюдается . самый момент Я заново ввел UINavigationController в микс, независимо от того, был ли он добавлен как подпредставление до или после представления таблицы, и неважно, будет ли alloc / init его до или после представления таблицы добавлено как подпредставление, результат такой же, как и раньше.

Я начинаю подозревать, что UINavigationController не слишком командный игрок ...

Обновление 2 Предложение проверить размер кадра после отображения таблицы на экране было хорошим: оказывается, что контроллер навигации фактически изменяет его размер некоторое время между загрузкой и отображением. Мое решение, в лучшем случае хакерское, состояло в том, чтобы кэшировать кадр, данный при загрузке, и сбрасывать его, если он был изменен в начале tableView: cellForRowAtIndexPath :. Почему там спрашиваешь? Потому что это единственное место, где я нашел работу, вот почему!

Я не считаю это решением, поскольку оно явно неуместно, но в интересах всех, кто читает, оно, похоже, работает.

Ответы [ 11 ]

0 голосов
/ 23 октября 2008

Если вы используете Interface Builder, вы можете просто перейти в окно свойств «Размер табличного представления» и изменить нижние вставки для содержимого и скроллера с высотой другого виджета.

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