Objective c 在Xcode情节串连板中使用展开序列消除Popover
我正在使用Xcode 4.5和新的iOS 6功能来展开分段。我在一个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
- (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:
,并在点击显示弹出框的按钮时显示/隐藏弹出框。您好,您找到解决方案了吗?我在这里被绊住了,很不幸,我还没有找到解决这个问题的办法。我仍在使用普通的旧授权,希望苹果能尽快解决这个问题。当您找到解决方案时,请告诉我。这是一种更简单的检查答案的方法