如何将NSViewController锚定为弹出窗口?

时间:2015-12-01 22:01:03

标签: objective-c xcode swift cocoa interface-builder

我使用以下屏幕设置创建了一个示例应用程序

enter image description here

单击加载弹出按钮只需调用以下代码:

@IBAction func clicked(sender: AnyObject) {
    self.performSegueWithIdentifier("test", sender:self)
}

正如你在segue属性中看到的那样,segue所做的就是加载viewcontroller,其中锚点视图是按钮testAnchor3

问题是:我不知道为什么视图没有锚定。当我点击LoadPopover按钮时,另一个视图控制器确实加载为弹出窗口,但它锚定在屏幕中间,而不是像它应该的那样在按钮下面。如何让popover正确锚定?

enter image description here

1 个答案:

答案 0 :(得分:0)

为您的按钮创建一个插座,并将其作为视图放在presentViewController: toView中。

- (void)presentViewController:(NSViewController *)viewController asPopoverRelativeToRect:(NSRect)positioningRect ofView:(NSView *)positioningView preferredEdge:(NSRectEdge)preferredEdge behavior:(NSPopoverBehavior)behavior
{
  //Change the ofView to be your button outlet
  [super presentViewController:viewController asPopoverRelativeToRect:positioningRect ofView:popOverButton preferredEdge:preferredEdge behavior:behavior];
}