iPad: как закрыть UIPopoverController из «всплывающего» ViewController - PullRequest
5 голосов
/ 24 марта 2011

Я конвертирую и проект iphone в ipad.На iphone у меня есть mainViewController, который открывает loginViewController, используя addSubView.

. На iPad я хотел бы отобразить этот loginViewController во всплывающем окне.поэтому я сделал что-то вроде:

UIPopoverController *loginPop = [[UIPopoverController alloc] initWithContentViewController:loginViewController];
[loginPop presentPopoverFromRect:CGRectMake(150, 150, 90, 90) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:true];

Это отлично работает.Проблема в том, что loginViewController завершает свое «дело».На iPhone я просто называю простой [self.view removeFromSuperview]; Но на ipad это вызывает удаление представления из PopoverController, но рамка всплывающего окна остается.

Итак, мой вопрос: есть ли простой способ извнутри loginViewController, чтобы удалить его контейнер PopoverController (без использования делегата или уведомлений)?

Ответы [ 2 ]

9 голосов
/ 24 марта 2011

Да, ваш loginViewController должен содержать ссылку на поповер. Затем вы можете использовать dismissPopoverAnimated: метод самого вашего поповера, чтобы удалить его.

1 голос
/ 19 мая 2011

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

Как это:

MyAppDelegate *app = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
MyViewController * myView =[app viewController];
[myView.popover dismissPopoverAnimated:YES];
...