有没有办法以编程方式select一个segue锚点?

假设我有一个Storyboard,其中包含一个包含button的视图。 当用户按下这个button时,会popup一个popup窗口。

因此,我需要通过使用Xcode将segue拖到button来设置锚点(然后执行SegueWithIdentifier:)

所以,我的问题是:有没有一种方法来设置这个“锚”编程?

谢谢。

在我的情况下,我已经编程添加了几个UIBarButtonItem。 只使用一个不可见的视图作为archor的问题是,如果像我的情况那样,UIBarButtonItem的大小正在改变它的大小,popover的箭头不会出现居中,尽pipe它工作,看起来有点奇怪。

如何解决它。

在故事板中创build一个小视图(大小并不重要),使其不可见并链接它。 在我的情况下,这叫做invisibleViewAsArchor

连接UIBarbutton项目与后续行动。

-(IBAction) showMyPopover:(id)sender { if([self.popoverController isPopoverVisible]) { [self.popoverController dismissPopoverAnimated:YES]; }else{ self.invisibleViewAsArchor.frame = CGRectMake([sender view].frame.origin.x, [sender view].frame.origin.y-50, [sender view].frame.size.width, [sender view].frame.size.height); [self performSegueWithIdentifier:@"segue_to_something" sender:self]; } } 

正如你可以看到之前,它显示popover(与performSegueWithIdentifier),我正在改变Archor框架与来自button的事件触发的值。

希望能帮助到你。

您不能以编程方式创buildsegue,如下所述: 以编程方式创buildsegue ,但是,您可以configuration要在运行时显示的目标控制器。 在这里的苹果文档中解释了这一点: 触发Segue时configuration目标控制器 。

希望这有助于!

我有同样的问题,我在编程方式创build一个BarButtonItem。 您也可以通过创build一个隐藏的,禁用的button来解决这个问题,您可以在IB中设置这个button。

在故事板中,将popup窗口锚定到一些任意的button。 不要太担心哪一个,因为它会在代码中被覆盖。

在视图控制器方法prepareForSegue中,添加代码:

 let dest = segue.destinationViewController dest.popoverPresentationController?.barButtonItem = <your bar button here> 

或者如果你想要锚定到一个视图

 dest.popoverPresentationController?.barButtonItem = nil dest.popoverPresentationController?.sourceView = <your view here>