在新的xcode 4.2中实现一个简单的popover并捕获关闭Popover事件

时间:2011-11-05 23:00:25

标签: xcode4 ios5 uipopovercontroller uipopover

我放弃了,需要一些帮助。

我正在尝试使用故事板在xcode4中实现一个简单的选择器弹出窗口

我创建了一个故事板并添加了一个视图,这是一个选择器。我已将一个按钮链接到视图,并显示带有选择器的视图。出现选择器弹出窗口,我可以选择我想要的值。当我解雇popover时,我没有发生任何事件。以前在调用视图中调用了“popoverControllerDidDismissPopover”方法。从这里我可以执行任何后期弹出操作并检索我根据选择器选择计算的任何特定结果。这一切都在以前工作。

使用故事板时“popoverControllerDidDismissPopover”的等效内容

由于

2 个答案:

答案 0 :(得分:4)

让您的视图控制器“拥有”popover / segue,使用UIPopoverControllerDelegate方法实现popoverControllerDidDismissPopover协议。另外,请确保在Interface Builder中为segue分配了一个标识符。然后,实现prepareForSegue方法:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
{
  if ([segue.identifier isEqualToString:@"MyPopoverSegueIdentifier"]) {
    UIStoryboardPopoverSegue* popSegue = (UIStoryboardPopoverSegue*)segue;
    popSegue.popoverController.delegate = self;
    // also set any properties of the popover view controller itself:
    // popSegue.destinationViewController.someProperty = xyz
  }
}

现在,您将按预期收到popoverControllerDidDismissPopover条消息。

答案 1 :(得分:0)

我不知道xcode等价,因为我是MonoTouch用户,但我知道当你以编程方式解除popover时,不会触发DidDismiss事件(参见Apple documentation)。只有当用户选择另一个元素才能解除弹出窗口时,才会调用它。

要在MonoTouch中解决此问题,我们必须继承UIPopoverController,添加我们自己的事件,覆盖Dismiss方法,并在override方法中触发新事件。这样,无论是以编程方式还是由用户解除弹出窗口,都会调用它。