5

我正在将 iphone 项目转换为 ipad。在 iphone 上,我有一个 mainViewController,它使用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 容器(不使用委托或通知)?

4

2 回答 2

9

是的,您loginViewController应该保留对弹出框的引用。然后您可以使用dismissPopoverAnimated:弹出框本身的方法将其删除。

于 2011-03-24T12:38:56.437 回答
1

实际上,我想实现它,但我记得我们可以访问应用程序委托,这反过来又可以访问它的主视图,在那里,您可以存储弹出框的属性,您可以调用dismissPopoverAnimated.

像这样 :

MyAppDelegate *app = (MyAppDelegate *) [[UIApplication sharedApplication] delegate];
MyViewController * myView =[app viewController];
[myView.popover dismissPopoverAnimated:YES];
于 2011-05-19T03:42:45.687 回答