我通过在mainController中为此NSView的按钮分配以下操作,为NSPopover的自定义NSView创建了打印功能:
@IBOutlet var plasmidMapIBOutlet: PlasmidMapView!
@IBAction func actionPrintfMap(sender: AnyObject)
{
plasmidMapIBOutlet.print(sender)
}
它正常工作,但打印窗口无法选择纸张尺寸和方向,请参见下面的屏幕截图。
我已经想出了一些时刻,但并不完全。所以,我可以通过以下代码设置打印
@IBAction func actionPrintMap(sender: AnyObject)
{
let printInfo = NSPrintInfo.sharedPrintInfo()
let operation: NSPrintOperation = NSPrintOperation(view: plasmidMapIBOutlet, printInfo: printInfo)
operation.printPanel.options = NSPrintPanelOptions.ShowsPaperSize
operation.printPanel.options = NSPrintPanelOptions.ShowsOrientation
operation.runOperation()
//plasmidMapIBOutlet.print(sender)
}
但是,我还有问题。从上面的代码中我可以获得仅方向(最后一个,ShowsOrientation),但不能同时获得PaperSize和Orientation。如何管理ShowsPaperSize和ShowsOrientation?
答案 0 :(得分:3)
最后,我找到了一个简单易懂的答案,但从苹果文档来看并不是很明显。
operation.printPanel.options.insert(NSPrintPanelOptions.showsPaperSize)
operation.printPanel.options.insert(NSPrintPanelOptions.showsOrientation)
答案 1 :(得分:0)
最初发布的代码中的问题是options
被分配了两次,因此分配的第一个值ShowsPaperSize
被值ShowsOrientation
覆盖。这就是为什么您仅在对话框中看到ShowsOrientation
选项的原因。
通过使用多个insert
操作,您正在添加选项而不是每次都覆盖。您也可以按照我认为更好的方式进行操作:
operation.printPanel.options.insert([.showsPaperSize, .showsOrientation])
最后,它还可以“设置”选项,并通过将现有选项作为第一个数组值提供,可以达到附加效果:
operation.printPanel.options = [
operation.printPanel.options,
.showsPaperSize,
.showsOrientation
]
(第一个数组元素operation.printPanel.options
意味着旧选项在新选项列表中提供。)