为什么在 ElCapitan GM 和 Xcode 7 GM 中弹出窗口出现在视图之外?

Why in ElCapitan GM and Xcode 7 GM the popover appears outside of the view?

有人知道为什么在 ElCapitan GM 和 Xcode 7 GM 中弹出窗口出现在视图之外吗?

弹出窗口由 "Button" 触发。

下图是一个新项目,没有我写的代码,只有一个按钮。

这是错误还是新的 "feature"?

刚刚试了一下,Storyboard里好像不能设置popover anchor。也许这确实是新版本中的一个错误。

要以编程方式显示弹出窗口,请设置弹出窗口视图控制器的 StoryboardID,例如:"PopoverViewController"。下面,它在主视图控制器中作为惰性变量实现,因此它只实例化一次,即第一次被引用时。

将一个 IBAction 从您的按钮连接到主视图控制器——这里是一个名为 "displayPopover" 的函数。 "guard let" 语句确保发件人可以转换为 NSButton。

然后,只需调用: presentViewController:asPopover...

lazy var popoverViewController: NSViewController = {
    return self.storyboard!.instantiateControllerWithIdentifier("PopoverViewController")
        as! NSViewController
    }()

@IBAction func displayPopover(sender: AnyObject) {

    guard let button = sender as? NSButton else {return}

    self.presentViewController(popoverViewController, asPopoverRelativeToRect: button.frame, ofView: button, preferredEdge: NSRectEdge.MaxY, behavior: NSPopoverBehavior.Transient)

}