Macos NSPrintOperation视图为空

Macos NSPrintOperation视图为空,macos,swift3,nsview,nsprintoperation,Macos,Swift3,Nsview,Nsprintoperation,我还是OSX/Swift 3.1的新手,但我有点困惑,我建立了一个epos系统,它的工作都很好,我只是坚持打印收据 我已经构建了一个XIB视图,下面显示了相应的swift文件 class Receipt: NSView { let currentOrder = NewOrder.instance @IBOutlet var view: NSView! @IBOutlet weak var facebookString: NSTextField! @

我还是OSX/Swift 3.1的新手,但我有点困惑,我建立了一个epos系统,它的工作都很好,我只是坚持打印收据

我已经构建了一个XIB视图,下面显示了相应的swift文件

    class Receipt: NSView {

    let currentOrder = NewOrder.instance

    @IBOutlet var view: NSView!

    @IBOutlet weak var facebookString: NSTextField!

    @IBOutlet weak var websiteString: NSTextField!

    @IBOutlet weak var totalString: NSTextField!

    @IBOutlet weak var vatString: NSTextField!

    @IBOutlet weak var subTotalString: NSTextField!

    @IBOutlet weak var CashierName: NSTextField!

    @IBOutlet weak var orderNumber: NSTextField!

    @IBOutlet weak var date: NSTextField!

    @IBOutlet weak var itemList: NSTextField!

    override init(frame frameRect: NSRect) {
        super.init(frame: frameRect)

        Bundle.main.loadNibNamed("ReceiptView", owner: self, topLevelObjects: nil)

        let contentFrame = NSMakeRect(0, 0, frame.size.width, frame.size.height)
        self.view.frame = contentFrame
        self.addSubview(self.view)
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)
        subTotalString.stringValue = "Hello World"
        view.draw(dirtyRect)
        subTotalString.draw(dirtyRect)
    }

    }
我已将nib名称添加到XIB引用中,并加载了一个新的Receipt()类,并将视图添加到NSPRINT操作中

            let order = NewOrder.instance

        let sview = Receipt()

        let printer = NSPrinter(name: "EPSON TM-T88V");
        let printData = NSPrintInfo()
            printData.printer = printer!
        let printerName = printer?.name
        let docSize = NSMakeSize(CGFloat(204.0), CGFloat(200));
        let res = "180x180dpi";
        let speed = "Auto";
        let blank = "Off";
        let paperCut = "DocFeedCut";
        let chashDrwr1 = "After";
        let chashDrwr2 = "Off";
        let buzzerControl = "Off";
        let buzzerPattern = "Internal";
        let buzzerRepeat = "1";

        let data = TMPrintSupport.tmSetJobTicket(printData, printerName: printerName, documentSize: docSize, resolution: res, speed: speed, blank: blank, paperCut: paperCut, chashDrwr1: chashDrwr1, chashDrwr2: chashDrwr2, buzzerControl: buzzerControl, buzzerPattern: buzzerPattern, buzzerRepeat: buzzerRepeat)

        let po = NSPrintOperation(view: sview.view, printInfo: printData)
    //        po.showsPrintPanel = false
        po.canSpawnSeparateThread = true
        po.cleanUp()

        return po.run()
当显示打印视图时,它是空白的,不包含该视图,并且是空白的,我还测试了打印,打印只是空白


欢迎任何建议,谢谢

这里有一堆代码似乎根本没有使用,比如“TMPrintSupport”(一些定制的Epson东西?)和上面的大多数“let s”。您还做了一些非常奇怪的事情,比如子类化NSView并从其init()内部加载xib,直接设置selfframe,并将dirtyRect传递给子视图的draw()方法(当不清楚时,它们的帧将始终与您的帧相同)。您正在定义
init(NSRect)
init(NSCoder)
但随后调用
init()
——您希望在这里发生什么?