在选择时关闭UIPopover

时间:2013-07-12 20:33:28

标签: ios objective-c cocoa-touch uipopover

所以,我一直在浏览互联网,我无法解决这个问题,因为我看到的所有答案都与一个视频层比我的视图层更少有关,如果这是有意义的话。

无论如何,我有一个主视图,它打开一个popover,其中包含一个UINavigationController,它包含一个UITableViewController。这一切都在故事板中设置,从按钮点击连接到弹出导航视图控制器的segue。

当我在UITableViewController上选择某些内容时,我想忽略popover,但是我看到的所有解决方案只有在我没有UINavigationController时才有效。

有什么想法吗?我听见了。

3 个答案:

答案 0 :(得分:1)

你应该只有你的UIViewController的属性指向你的UIPopoverController。当你创建你的UIViewController时,只需将它链接起来。

答案 1 :(得分:0)

使用dismissPopoverAnimated:在调用tableView:didSelectRowAtIndexPath:时将其解除。

http://www.raywenderlich.com/29472/ipad-for-iphone-developers-101-in-ios-6-uipopovercontroller-tutorial

答案 2 :(得分:0)

好的,我想我找到了答案。

如果有人发现任何问题,如果你让我知道,我会很感激,但到目前为止这对我有用:

在我的主视图控制器(打开弹出窗口的控制器)中:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue*) segue;
    currentPopover = [popoverSegue popoverController];
    currentPopover.delegate = self;

    UINavigationController *destinationNavController = (UINavigationController*)segue.destinationViewController;

    SelectServerToConnectViewController *destinationView = [destinationNavController.childViewControllers objectAtIndex:0];
    destinationView.parentPopover = currentPopover;
}

在我的SelectServerToConnectViewController中:

-(void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    ServerItem *selectedServer = [CoreDataController getServerForIndex:indexPath.row];
    [parentPopover dismissPopoverAnimated:true];
}