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

发布于 2024-12-12 16:21:02 字数 59 浏览 5 评论 0原文

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

In my Popover controller, i'm having a table view. On selection of a cell, I want to hide the pop over.
How can I achieve it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

为人所爱 2024-12-19 16:21:02

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

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

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

In Header file of Root view controller:

@property (strong, nonatomic) UIStoryboardPopoverSegue* popSegue;

In the implementation file:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if( [[segue identifier] isEqualToString:@"popover"] )
    {
        NSLog(@"%@",[segue destinationViewController]);
        self.popSegue = (UIStoryboardPopoverSegue*)segue;

        [[segue destinationViewController] setDelegate:self];
    }
}

When ever you want to hide the pop over:

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

In the table view, add a delegate and implement the delegate in root view controller. When the delegate method is called, use above code to dismiss the pop over.

心作怪 2024-12-19 16:21:02

请允许我建议一个稍微不同的解决方案,其中包括传递弹出窗口控制器引用而不是 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];

Allow me to suggest a slightly different solution, which consists in passing the popover controller reference instead of the segue reference.

In the implementation file of the source view controller:

-(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]];
    }
}

In the header file of the destination view controller:

@property (weak, nonatomic) UIPopoverController* popoverController;

In the implementation file of the destination view controller:

@synthesize popoverController;

Same file, whenever you want to dismiss the popover:

[popoverController dismissPopoverAnimated:YES];
厌倦 2024-12-19 16:21:02

苹果文档建议如下:

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

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

The apple docs recommend the following:

Dismissing a popover programmatically requires a pointer to the popover controller. The only way to get such a pointer is to store it yourself, typically in the content view controller. This ensures that the content view controller is able to dismiss the popover in response to appropriate user actions.

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

无言温柔 2024-12-19 16:21:02

在 didSelectRowAtIndexPath 尝试这个代码

[viewController.popoverController dismissPopoverAnimated:YES];

in didSelectRowAtIndexPath try this code

[viewController.popoverController dismissPopoverAnimated:YES];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文