2009-08-19 3 views
3

Я использую UINavigationController для обработки pushing и poping viewControllers в моем приложении. Это раздел, в котором у меня есть панель вкладок (не использующая UITabbarController), который управляется одним и тем же UINavigationController, я просто добавляю UITabBar в представление контроллеров навигации (используя addSubview).Изменение размера viewControllers вид, который является частью UINavigationController на IPhone

Проблема: У меня есть UIViewControllers, которые отображаются в стеке в виде таблиц, так как моя панель вкладок является частью представления, а не панель навигации, TableViews обрезаны при buttom, потому что контроллер навигации не знайте панель вкладок, потому что она находится в ее представлении и в навигационном стеке. Без контроллера навигации я бы просто изменил вид ViewControllers, и он будет работать нормально, но когда я попытаюсь сделать это, похоже, что NavigationCOntroller просто игнорирует мой кадр и устанавливает его собственный, и поэтому представления в таблице отключены. Я нашел одно решение, которое должно было добавить несколько лишних ячеек и скрыть их, и это работает вроде ОК, но его хакерство, у кого есть какие-то предложения о том, как об этом по-другому нехарактерно?

Благодаря

+0

Я знаю, что меня раздражает то, что контроллер навигации не позволит мне изменить размер его представлений. Наблюдатели ... – Daniel

+0

Можете ли вы показать скриншоты своей проблемы? – Jonah

+0

Я нашел свой ответ, спасибо Jonah ... экран выглядел бы как tableview, а табак и табуляция, покрывающая последние несколько ячеек табличного представления (это прокрутка не прошла) – Daniel

ответ

1

Хорошо, поэтому я решил проблему. Раньше я пытался изменить размер UITableView вместо viewController, но это не сработало. Я просто понял, что это не сработало, потому что я использовал UITableViewController, который управляет собственным табличным представлением и не позволял мне изменить его структуру (возможно, я менял его не в том месте, пытался в viewDidLoad, я ставлю, если я сделал это после вызова [super viewDidload], это сработало бы ... ну). Поэтому я изменил класс на UIViewController и управлял табличным представлением там, теперь он работает хорошо, спасибо за ответы.

+0

Как насчет нижней панели инструментов? Можете ли вы его переместить? – bentford

0

Попробуйте сделать корень просмотр UIView с UITableView для подвида. Затем добавьте UITabBar в экземпляр UIView. Теперь UITableView не будет знать о UINavigationController.

+0

это не то, что мне очень нравится мой взгляд контроллеры для управления моим табличным представлением ... Я только нашел свой ответ, хотя, я пробовал это раньше и не работал, но теперь он это делает, проверьте его – Daniel

+0

Я, вероятно, не очень хорошо это объяснил. Фактически у вас теперь есть экземпляр UIViewController для основного представления и экземпляр UITableViewController для представления таблицы. Экземпляр UItableViewController является ivar экземпляра UIViewController. Это также хорошо работает, чтобы разделить обязанности управления таблицей и управлением UINavigationBar, загрузкой подзаголовков и т. Д. –

+0

По совпадению, это похоже на ваше текущее решение, с дополнительным преимуществом от использования UITableViewController для управления вашей таблицей. –