有没有办法以编程方式选择segue锚点?

Art*_*dio 15 objective-c storyboard ios uistoryboardsegue

假设我有一个包含一个包含按钮的视图的Storyboard.当用户按下此按钮时,会出现弹出窗口.

因此,我需要通过使用Xcode将segue拖动到按钮来设置锚点(然后执行performSegueWithIdentifier:).

所以,我的问题是:有没有办法以编程方式设置这个"锚"?

谢谢.

MiQ*_*UEL 14

在我的例子中,我已经以编程方式添加了几个UIBarButtonItem.仅使用不可见视图作为存档的问题是,如果在我的情况下,UIBarButtonItem的大小正在改变它的大小,则弹出框的箭头不会出现居中,并且尽管它起作用,看起来有点奇怪.

如何解决它.

在故事板中创建一个小视图(大小并不重要),使其不可见,并链接它.在我的例子中,这被称为invisibleViewAsArchor

使用follow操作连接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];
    }
}
Run Code Online (Sandbox Code Playgroud)

正如你在它显示popover(使用performSegueWithIdentifier)之前所看到的那样,我正在使用触发事件的按钮中的值来更改Archor的框架.

希望能帮助到你.

  • 小(小)优化:你不需要那里的"返回":) (2认同)

Dal*_*ale 5

在情节提要中,将弹出框锚定到任意按钮。不必太担心哪一个,因为它将在代码中被覆盖。

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

let dest = segue.destinationViewController
dest.popoverPresentationController?.barButtonItem = <your bar button here>
Run Code Online (Sandbox Code Playgroud)

或者如果您想锚定到视图

dest.popoverPresentationController?.barButtonItem = nil
dest.popoverPresentationController?.sourceView = <your view here>
Run Code Online (Sandbox Code Playgroud)