2012-05-05 2 views
1

У меня есть код в моем приложении, который добавляет UIView к представлению контроллера корневого представления. Это представление является полупрозрачным и функционирует как модальное наложение, которое охватывает все приложение (представление содержит кнопку, которая при нажатии удаляет вид из своего супервизора, а именно, как пользователь возвращается к основному приложению).Есть ли способ разместить UIView над UIPopoverController?

Это хорошо работает до сих пор, но теперь мы используем UIPopoverController и пытаемся использовать этот же модальный оверлей для блокировки основного приложения. Проблема в том, что этот UIView показан позади popover, а не поверх него.

Есть ли способ добавить subview в представление контроллера корневого представления таким образом, чтобы он отображался поверх любых видимых UIPopoverController s, но не отбрасывая их?

ответ

1

Ссылка на UIPopoverController гласит:

«Содержание поповер наслаивается поверх существующего контента в специальном типе окна»

NSLogging массива subviews показывает, что представление не добавлено в иерархию представлений viewController, которая отображает ее. С моей точки зрения то, что вы пытаетесь сделать, невозможно.

Вот идея, хотя:

Вы можете добавить свой блокирующий UIView к contentViewController в UIPopOverController и использовать его, чтобы установить свойство на contentViewController.

Затем вы устанавливаете свой главный ViewController, который фактически отображает UIPopoverController, в качестве делегата и сделать пирог что-то вроде этого:

- (void) popoverControllerShouldDismissPopover:(UIPopoverController*)popoverController 
{ 
    if(popoverController.contentViewController.yourProperty) 
    { 
     return YES; 
    } 
    return NO; 
} 

Я не знаю, сколько это помогает в вашей текущей ситуации, но может быть, это заставляет вас начать.

+0

Это не помогает моей нынешней ситуации, которая «завинчивается». Я хотел реализовать самодельное решение popover (у которого не было бы этой проблемы), но это потребовало бы преобразования всех наших контроллеров представлений в представления, которые остальная часть моей команды не хотела делать. – MusiGenesis

+0

Прошу прощения за это. Надеюсь, вы все равно сможете справиться! –