为什么在ElCapitan GM和Xcode 7 GM中,popover出现在视图之外?

时间:2015-09-12 19:04:56

标签: swift2 xcode7

有人知道为什么在ElCapitan GM和Xcode 7 GM中,popover会出现在视图之外吗?

弹出窗口由"按钮"触发。

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

是一个错误还是一个新的"功能"?

Print screen

1 个答案:

答案 0 :(得分:1)

我刚尝试过,似乎你无法在故事板中设置弹出窗口。也许这确实是新版本中的一个错误。

要以编程方式显示弹出窗口,请设置弹出窗口视图控制器的StoryboardID,例如:“PopoverViewController”。下面,它在主视图控制器中实现为一个惰性var,所以它第一次被实例化,第一次被引用。

将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)

}