Objective c 在Xcode情节串连板中使用展开序列消除Popover

Objective c 在Xcode情节串连板中使用展开序列消除Popover,objective-c,ios,uipopovercontroller,xcode4.5,uistoryboardsegue,Objective C,Ios,Uipopovercontroller,Xcode4.5,Uistoryboardsegue,我正在使用Xcode 4.5和新的iOS 6功能来展开分段。我在一个popover中展示了一个导航视图控制器,它是从一个条形按钮项以编程方式呈现的: - (IBAction)configChartTapped:(id)sender { if (self.popover.isPopoverVisible) { [self.popover dismissPopoverAnimated:YES]; } else { UINavigationContr

我正在使用Xcode 4.5和新的iOS 6功能来展开分段。我在一个popover中展示了一个导航视图控制器,它是从一个条形按钮项以编程方式呈现的:

- (IBAction)configChartTapped:(id)sender
{
    if (self.popover.isPopoverVisible) {

        [self.popover dismissPopoverAnimated:YES];

    } else {
        UINavigationController *chartConfigNavigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"GrowthChartNavigationController"];

        ConfigChartTypeViewController *configChartTypeViewController = (ConfigChartTypeViewController*) chartConfigNavigationController.topViewController;

        self.popover = [[UIPopoverController alloc]initWithContentViewController:chartConfigNavigationController];
        self.popover.popoverContentSize = CGSizeMake(320, 500);
        self.popover.delegate = self;

        [self.popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    }
}
在这个方法的旁边,我定义了一个目标来释放segue(即解除popover)

。。。并将其连接到导航视图控制器导航栏中的“取消”按钮

将取消栏按钮连接到cancelConfig按钮在Xcode中运行良好

然而,当运行代码时,当点击Cancel按钮时不会发生任何事情,尽管Xcode 4.5应该支持在展开序列时取消弹出窗口(根据发布文档)

我错过了什么


谢谢大家!

展开分段使用运行时搜索,首先要求父视图控制器遍历通过分段显示的视图控制器链,直到找到正确的展开方法。但是这里没有链,因为popover是通过编程而不是通过popover segue创建的

没有回调,因为没有返回到父视图控制器的segue链接。展开分段是委托的一种抽象形式,因此这类似于忘记设置委托而不接收任何回调

解决方案是使用Interface Builder中的segue创建popover,而不是使用
configChartTapped:
方法以编程方式创建它

步骤:

首先,控制从presenting view控制器中的条形按钮项到presented view控制器的拖动,并选择popover segue:

在显示视图控制器中,实现
prepareforsgue:
以获取对popover控制器的引用:

- (void)prepareForSegue:(UIStoryboardPopoverSegue *)segue
                 sender:(id)sender {
    self.popover = segue.popoverController;
}
然后执行
shouldPerformSegueWithIdentifier:
以恢复 显示/隐藏行为类似于
configChartTapped:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (self.popover.isPopoverVisible) {
        [self.popover dismissPopoverAnimated:YES];
        return NO;
    } else {
        return YES;
    }
}
最后,在Interface Builder中,为显示的视图控制器设置正确的popover内容大小:

- (void)prepareForSegue:(UIStoryboardPopoverSegue *)segue
                 sender:(id)sender {
    self.popover = segue.popoverController;
}


这将允许您在点击弹出框上的取消按钮时,将弹出框展开到
cancelConfig:
,并在点击显示弹出框的按钮时显示/隐藏弹出框。

您好,您找到解决方案了吗?我在这里被绊住了,很不幸,我还没有找到解决这个问题的办法。我仍在使用普通的旧授权,希望苹果能尽快解决这个问题。当您找到解决方案时,请告诉我。这是一种更简单的检查答案的方法