0

所以,我一直在互联网上研究,我无法解决这个问题,因为我看到的所有答案都与一个视图层比我的少的弹出框有关,如果这是有道理的话。

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

当我在 UITableViewController 上选择某些内容时,我想关闭弹出框,但是我看到的所有解决方案都只有在我没有 UINavigationController 时才有效。

有任何想法吗?我全是耳朵。

4

3 回答 3

1

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

于 2013-07-12T20:44:37.353 回答
0

在调用 tableView:didSelectRowAtIndexPath: 时使用 dismissPopoverAnimated: 将其关闭。

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

于 2013-07-12T20:43:01.650 回答
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];
}
于 2013-07-12T21:13:24.537 回答