Popover Segue Cocoa 故事板在 El Capitan 的 Xcode 7 Beta 6 中改变位置
Popover Segue Cocoa Storyboard changing position in Xcode 7 Beta 6 on El Capitan
这是一个非常具体的问题,但是 XcodeEl Capitan 上的 7 Beta 6 似乎改变了 Popover Segues 的锚定方式。弹出窗口本身不是从按钮锚定,而是从封闭视图锚定。有没有其他人遇到过这种情况或想出了解决方法?
例如,这是一个带有按钮的新项目,弹出窗口从视图顶部显示,即使 segue 锚定到按钮。
不幸的是,Xcode 7.0.1 和 El Capitan 10.11 仍然会发生这种情况,因此我们需要按照评论中所述以编程方式执行此操作。此代码段可能会有所帮助:
class ViewController: NSViewController {
var popover = NSPopover()
@IBOutlet var button: NSButton?
@IBAction func pressButton(sender: AnyObject?) {
let mainStoryboard: NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
guard let windowController = mainStoryboard.instantiateControllerWithIdentifier("Popover") as? NSViewController else { return }
popover.contentViewController = windowController
popover.behavior = .Transient
popover.showRelativeToRect(button!.bounds, ofView: sender as! NSView, preferredEdge: .MaxY)
}
}
这是一个非常具体的问题,但是 XcodeEl Capitan 上的 7 Beta 6 似乎改变了 Popover Segues 的锚定方式。弹出窗口本身不是从按钮锚定,而是从封闭视图锚定。有没有其他人遇到过这种情况或想出了解决方法?
例如,这是一个带有按钮的新项目,弹出窗口从视图顶部显示,即使 segue 锚定到按钮。
不幸的是,Xcode 7.0.1 和 El Capitan 10.11 仍然会发生这种情况,因此我们需要按照评论中所述以编程方式执行此操作。此代码段可能会有所帮助:
class ViewController: NSViewController {
var popover = NSPopover()
@IBOutlet var button: NSButton?
@IBAction func pressButton(sender: AnyObject?) {
let mainStoryboard: NSStoryboard = NSStoryboard(name: "Main", bundle: nil)
guard let windowController = mainStoryboard.instantiateControllerWithIdentifier("Popover") as? NSViewController else { return }
popover.contentViewController = windowController
popover.behavior = .Transient
popover.showRelativeToRect(button!.bounds, ofView: sender as! NSView, preferredEdge: .MaxY)
}
}