Как правильно представить два последовательных UIPopoverController? - PullRequest
1 голос
/ 10 июня 2011

Я хочу представить пользовательское меню внутри поповер контроллера, когда пользователь нажимает на кнопку UIB. Затем я хочу представить другое меню, используя точно такой же подход, когда пользователь нажимает другую кнопку.

Моя проблема заключается в следующем: когда пользователь нажимает первую кнопку, появляется всплывающее окно с моим меню, и это нормально. Но затем, когда он нажимает вторую кнопку, вместо того, чтобы отклонить первый поповер и затем представить второе со вторым меню, мое приложение просто отклоняет первый поповер. И тогда, когда пользователи нажимают вторую кнопку, появляется второй поповер. Таким образом, пользователь должен нажать два раза, чтобы увидеть второе меню.

Вот как я создаю меню и поповер:

CascadeMenuViewController *cascadeMenuViewController = [[CascadeMenuViewController alloc] initWithNibName:@"CascadeMenuViewController" bundle:nil];

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:cascadeMenuViewController];
[cascadeMenuViewController release];
navigationController.navigationBar.barStyle = UIBarStyleBlack;

_popoverMenuView = [[UIPopoverController alloc] initWithContentViewController:navigationController];                    
[navigationController release];

[_popoverMenuView presentPopoverFromRect:_currentlyTouchedButtonView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

Вот как я отклоняю поповер, когда пользователь выбирает sthg из меню внутри поповера:

if (_popoverMenuView) {
    [_popoverMenuView dismissPopoverAnimated:YES];
    [_popoverMenuView release];
    _popoverMenuView = nil;
}

Можете ли вы сказать мне, что я делаю неправильно?

Спасибо заранее ...

1 Ответ

0 голосов
/ 11 июня 2011

Происходит следующее:

  1. когда отображается всплывающее окно, каждое нажатие за его пределами будет просто отменять всплывающее окно и не будет перенаправлено на другие виды;

  2. вы можете переопределить этот механизм, используя passthroughViews, список представлений, которые перенаправляют кранам;

  3. следует отметить, что когда происходит переадресация (т. Е. Вы нажимаете на одно из представлений в passthroughViews), всплывающее окно не будет отменено автоматически; так что, в вашем случае, вам придется уволить по своему усмотрению, а когда нажмите на кнопку, вы откроете второй всплывающее окно.

Из Apple Documents :

При отображении касания за пределами всплывающего окна автоматически закрывают всплывающее окно. Чтобы позволить пользователю взаимодействовать с указанными представлениями и не отклонять всплывающее окно, вы можете назначить одно или несколько представлений свойству passthroughViews. Нажатие внутри всплывающего окна не приводит к автоматическому отключению всплывающего окна. Ваш код контроллера представления и просмотра должен явно обрабатывать действия и события внутри всплывающего окна и вызывать метод dismissPopoverAnimated: при необходимости.

...