正如@Anoop所说的,通常每次只能显示一个popover。
一个可能的解决方案是检查弹出的contentViewController
属性。如果你是存储每个视图控制器的一个参考,你可以这样做:
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
if (popoverController.contentViewController == self.someUIViewController) {
// do stuff
}
else if (popoverController.contentViewController == someoTherViewController) {
//
}
NSLog(@"Popover dismised %@", popoverController);
}
如果存储到每个内容视图控制器的引用是不可能的(或者只是不是一个好主意),你总是可以检查其类型:
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
if ([popoverController.contentViewController isKindOfClass:[MyAwesomeViewController class]]) {
// do stuff
}
else if ([popoverController.contentViewController isKindOfClass:[MyOtherViewController class]]) {
//
}
NSLog(@"Popover dismised %@", popoverController);
}
另一种可能的解决方案,这可能是从一个设计观点看较好,将在一个代理传递到包含在弹出在视图控制器。 More here。这样,显示的视图控制器可以将数据发送回您的主视图控制器。
也许你可以使用'UIPopOverController'积木?这样你就不必关心这一点。 – Peres 2013-03-19 13:47:40
你想要达到什么目标? – 2013-03-19 13:59:10
我的目标是,当某个特定的popover被解雇时,我可以更新几个不同的按钮状态。但是直到流行病被解雇之后。是的,我可以不断更新按钮状态,无论什么改变,但这不是我的要求。 – JasonBourne 2013-03-19 14:22:24