Могу ли я использовать UINavigationController в качестве подробного представления UISplitViewController? - PullRequest
7 голосов
/ 21 сентября 2010

У меня проблема с приложением для iPad, где я хотел бы иметь UINavigationControllers в обоих представлениях в UISplitView. Я просмотрел другие подобные вопросы здесь, но большинство ссылок на учебник онлайн, который не полностью решает проблему. Вот 2-х минутное пошаговое руководство, чтобы воссоздать проблему, с которой я столкнулся:

  1. Создание нового проекта в XCode, начиная с шаблона приложения Split View.
  2. Добавьте следующий оператор NSLog в качестве первой строки в методе willHideViewController DetailViewController:

    NSLog (@ "панель инструментов:% @", панель инструментов);

Если вы запустите приложение сейчас, журнал покажет, что панель инструментов DetailViewController жива и исправна. Теперь ...

  1. Откройте MainWindow.xib и раскройте SplitViewController.
  2. Перетащите контроллер навигации из библиотеки поверх DetailViewController.
  3. Разверните новый контроллер навигации и измените класс UIViewController внутри на DetailViewController.
  4. Удерживая клавишу Ctrl, перетащите курсор из SplitViewController в DetailViewController и назначьте его в качестве делегата.
  5. Сохраните MainWindow.xib и снова запустите приложение.

На этом этапе подробный вид имеет панель навигации и пустую панель инструментов. Если вы просматриваете журналы, вы должны обнаружить, что панель инструментов пуста. Почему это? Я пропускаю какое-то соединение в Интерфейсном Разработчике? Является ли навигационная панель проблемой по какой-то причине?

В отличие от учебника по http://www.cimgf.com/2010/05/24/fixing-the-uisplitviewcontroller-template/, Я хотел бы сохранить и панель навигации, и панель инструментов (желательно с панелью инструментов вверху, когда в портретной ориентации, и не видна, когда в альбомной), чтобы у меня все еще был функциональная кнопка «Назад», когда iPad находится в портретной ориентации.

У кого-нибудь есть предложения по устранению этой проблемы? Пример проекта с такого рода настройками был бы идеальным.

Ответы [ 2 ]

1 голос
/ 08 июня 2012

Вы, безусловно, можете использовать навигационный контроллер на подробном виде контроллера с разделенным видом. На самом деле, приложение «Настройки iPad» использует этот подход. Вероятно, лучший способ получить эту настройку - создать новый проект в Xcode 4.x и выбрать шаблон «Master-Detail Application». Он сгенерирует контроллер разделенного вида с 2 навигационными контроллерами, один для левого обзора и один для правого обзора.

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

Вот пример того, как скрыть панель навигации и показать панель инструментов:

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.navigationController.toolbarHidden = NO;
    self.navigationController.navigationBarHidden = YES;
}
0 голосов
/ 16 июня 2011

Я обнаружил, что встроенный UISplitViewController плохо работает при попытке объединить его с большинством других встроенных подклассов контроллера представления. MGSplitViewController , разработанный Мэттом Джеммеллом, гораздо более гибок и хорошо работает для меня, несмотря на странные сбои (хотя они, по крайней мере, исправимы, поскольку предоставляется исходный код).

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