什么是* iPad *上的AirPrint命令的Swift版本?

时间:2014-07-26 19:00:37

标签: swift airprint

感谢一位友好的stackoverflow会员,我现在可以通过iPhone完美地运行AirPrint(ing),但iPad的功能调用让我感觉很合适。这就是我所拥有的:

    if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
        pic.presentFromRect(self.view.frame, inView:self.view, animated:true, completionHandler: nil)
    } else {
        pic.presentAnimated(true, completionHandler: nil)
    }

调用iPad打印对话框的行是我对Objective-C代码的Swift转换,我通过Google搜索主题发现了很多次。它运行并被正确调用,但它所做的只是" dim"模拟器上的iPad屏幕(就像打开的东西一样,但它只是一个覆盖整个屏幕的巨大的灰色透明矩形)。如果我点击灰色屏幕上的任何地方它会恢复正常,程序会继续,好像我从未按过我的"打印"按钮(我正在使用我自己的" Print"我在故事板中创建的按钮)。我目前只能在模拟器上进行测试,所以我知道它甚至可能是一个测试版错误...但我猜测我做错了什么。

任何建议都表示赞赏!

感谢。


感谢Aaron,我的打印机选择iPad弹出窗口现在可以在我的程序中的每个按钮上工作,除了打印按钮! :)这是相关的代码:

@IBOutlet var myButton1: BorderedButton!
@IBOutlet var myButton2: BorderedButton!
@IBOutlet var myButton3: BorderedButton!

完全适用于除按钮3之外的所有按钮,当然这是我的"打印"按钮。这是按钮3的功能:

@IBAction func button3Tapped() {
    var pic:UIPrintInteractionController = .sharedPrintController()
    var viewpf:UIViewPrintFormatter = myTextView.viewPrintFormatter()
    pic.delegate = self
    pic.showsPageRange = true
    pic.printFormatter = viewpf
    if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
        pic.presentFromRect(self.myButton3.frame, inView:self.view, animated:true, completionHandler: nil)
    } else {
        pic.presentAnimated(true, completionHandler: nil)
    }
}

更改" self.myButton3.frame"到myButton1或myButton2,我在iPad模拟器中获得打印机选择弹出窗口,没有任何问题。但是把它变成myButton3只是给了我错误"致命错误:在解开一个Optional值时出乎意料地发现了nil#34;。如果我别无选择,我愿意让它出现在其他按钮之一上,但对我来说理解发生的事情可能会有好处!

再次感谢!

1 个答案:

答案 0 :(得分:0)

myButton3的插座没有连接到您的按钮(尝试重新连接)或者之后设置为nil,在这种情况下应将其声明为可选:{{ 1}}。