UIPopOverController + UITableView – 当单元格被选中时隐藏popup窗口
在我的Popover控制器中,我有一个表格视图。 在select一个单元格时,我想隐藏popup窗口。 我怎样才能做到这一点。
在根视图控制器的头文件中:
@property (strong, nonatomic) UIStoryboardPopoverSegue* popSegue;
在执行文件中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if( [[segue identifier] isEqualToString:@"popover"] ) { NSLog(@"%@",[segue destinationViewController]); self.popSegue = (UIStoryboardPopoverSegue*)segue; [[segue destinationViewController] setDelegate:self]; } }
当你想隐藏popup窗口时:
if ([self.popSegue.popoverController isPopoverVisible]) { [self.popSegue.popoverController dismissPopoverAnimated:YES]; }
在表视图中,添加一个委托并在根视图控制器中实现该委托。 当委托方法被调用时,使用上面的代码来消除popup。
请允许我build议一个稍微不同的解决scheme,其中包括传递popover控制器引用而不是segue引用。
在源视图控制器的实现文件中:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue destinationViewController] isKindOfClass:[MyDestViewController class]]) { MyDestViewController* viewController = (MyDestViewController*)[segue destinationViewController]; UIStoryboardPopoverSegue* popoverSegue = (UIStoryboardPopoverSegue*)segue; [viewController setPopoverController:[popoverSegue popoverController]]; } }
在目标视图控制器的头文件中:
@property (weak, nonatomic) UIPopoverController* popoverController;
在目标视图控制器的实现文件中:
@synthesize popoverController;
相同的文件,每当你想解散popover:
[popoverController dismissPopoverAnimated:YES];
苹果文档build议如下:
以编程方式取消popover需要一个指向popover控制器的指针。 获得这样一个指针的唯一方法是自己存储它,通常在内容视图控制器中。 这确保内容视图控制器能够响应于适当的用户动作而closurespopup。
在didSelectRowAtIndexPath中试试这个代码
[viewController.popoverController dismissPopoverAnimated:YES];