При использовании UITableViewController, метод initWithStyle: автоматически создает базовый UITableView с - согласно документации - "правильные размеры".
Моя проблема в том, что эти "правильные размеры" кажутся 320x460 (размер экрана iPhone), но я подталкиваю эту пару TableView/Controller в UINavigationController, который сам содержится в UIView, который сам составляет примерно половину высоты экрана.
Никаких фреймов или ограничений, которые я могу придумать, по-видимому, правильно reset размер таблицы, и как таковой он "слишком длинный", то есть есть набор строк, которые выталкиваются из нижней части экрана и невидимым и недоступным с помощью прокрутки.
Итак, мой вопрос сводится к следующему: что такое правильный способ сообщить UITableViewController изменить его компонент UITableView на указанный прямоугольник?
Спасибо!
Обновление. Я пробовал все предлагаемые здесь методы безрезультатно, но я нашел одну интересную вещь: если я вообще избегу UINavigationController (чего я еще не хочу делать для производства, но в качестве эксперимента) и добавьте представление таблицы в качестве прямого подсмотра рассматриваемого мною представления, при этом учитывается размер кадра. Самый сильный момент . Я повторно вношу UINavigationController в микс, независимо от того, добавлен ли он в виде подвью до или после представления таблицы, и независимо от того, будет ли alloc/init до или после представления таблицы добавляется как подвью, результат такой же, как и раньше.
Я начинаю подозревать, что UINavigationController - это не просто командный игрок...
Обновление 2. Предложение по проверке размера кадра после просмотра таблицы на экране было хорошим: оказывается, что навигационный контроллер фактически изменяет его время между загрузкой и отображением. Мое решение, в лучшем случае взломанное, заключалось в том, чтобы кэшировать фрейм, указанный при загрузке, и reset, если он изменился в начале таблицыView: cellForRowAtIndexPath:. Почему вы спрашиваете? Потому что это одно место, которое я нашел, что сработало, вот почему!
Я не рассматриваю это решение как явно неправильное, но, для того, чтобы кто-либо еще читал, он работает.