willHideViewController не вызывается при переключении в режим просмотра в портретном режиме - PullRequest
2 голосов
/ 09 декабря 2011

В моем приложении для iPad используется стандартный UISplitViewController.Моя проблема в том, что если я

  • Повернуть в портретную, я поставил кнопку Popover для основного списка - Fine
  • Выберите элемент с помощью всплывающего окна, который изменяет подробный вид (Это используетprepareForSegue, который устанавливает self.splitViewController.delegate = newViewDetailViewController;
  • В результирующем подробном представлении теперь отсутствует поповербатура. Если я поворачиваюсь в альбомную ориентацию, появляется главный список. Если затем я снова поворачиваюсь в портретный режим, появляется поповербакт.

Итак, как я могу гарантировать, что willHideViewController будет вызываться, например, на viewDidLoad? Я могу определить ориентацию, но мне все еще нужны barbuttonitem и popovercontroller, необходимые для

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController

На данный момент я следую примеру Apple MultipleDetailView в соответствии с предложением здесь .

Но так как у меня также есть несколько MasterController, хранить их очень сложно (статический указатель на элемент popoverbutton и устанавливает его каждый раз, когда я нажимаю уровень на своем контроллере masterview.

Надеюсь, у кого-то есть хороший способ решения этой проблемы: -)

1 Ответ

3 голосов
/ 03 апреля 2012

Я столкнулся с той же проблемой и наконец выяснил, чего не хватает.В AppDelegate есть небольшой код для выполнения некоторой инициализации.Это в методе didFinishLaunchingWithOptions.Вот код, который идет туда:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
splitViewController.delegate = (id)navigationController.topViewController;

Все они важны для работы с контроллером разделенного представления, но последняя строка - это самая большая строка для получения метода запуска, последняя.Я строю универсальное приложение, а этого не было.Чтобы убедиться, что это не повлияло на мою сторону iPhone, я завернул его в проверку UI_USER_INTERFACE_IDIOM.

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