UIPopOverController + UITableView - 选择单元格时隐藏弹出框

Posted

技术标签:

【中文标题】UIPopOverController + UITableView - 选择单元格时隐藏弹出框【英文标题】:UIPopOverController + UITableView - Hide popover when cell is selected 【发布时间】:2011-10-28 18:56:00 【问题描述】:

在我的 Popover 控制器中,我有一个表格视图。在选择一个单元格时,我想隐藏弹出窗口。 我怎样才能实现它。

【问题讨论】:

【参考方案1】:

在根视图控制器的头文件中:

@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];
    

当你想隐藏弹出窗口时:

    if ([self.popSegue.popoverController isPopoverVisible]) 
    
        [self.popSegue.popoverController dismissPopoverAnimated:YES];        
    

在表格视图中,添加一个委托并在根视图控制器中实现该委托。调用委托方法时,使用上面的代码关闭弹出窗口。

【讨论】:

很高兴你解决了这个难题。【参考方案2】:

请允许我提出一个稍微不同的解决方案,其中包括传递 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;

相同的文件,只要你想关闭弹出框:

[popoverController dismissPopoverAnimated:YES];

【讨论】:

【参考方案3】:

苹果文档推荐以下内容:

以编程方式关闭弹出框需要指向弹出框控制器的指针。获得这样一个指针的唯一方法是自己存储它,通常在内容视图控制器中。这可确保内容视图控制器能够关闭弹出框以响应适当的用户操作。

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/Popovers.html

【讨论】:

【参考方案4】:

在 didSelectRowAtIndexPath 中试试这个代码

[viewController.popoverController dismissPopoverAnimated:YES];

【讨论】:

以上是关于UIPopOverController + UITableView - 选择单元格时隐藏弹出框的主要内容,如果未能解决你的问题,请参考以下文章

html Aanhef uit SF of MC

UIPopoverController 解雇

定制的 UIPopoverController?

当 UIPopoverController 在屏幕上时,无法与带有 UIPopoverController 的 UISearchBar 进行交互

UIPopoverController 没有箭头?

UIPopoverController:关闭后更新视图