这是我用于Beta 6的Swift喷印的代码,它运行良好:
@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)
}
}
当然,测试版7以“未包装的可选类型'UIPrintInteractionController'的值未包装;您是要使用!还是??”来破坏它。在第一个var行上。不幸的是,XCode建议的修复无法解决该问题,而且我也不聪明自己弄清楚它!
最佳答案
Xcode 6 beta 7对Cocoa Touch API的大部分内容进行了审核,以了解它如何显示可选值 –即可能为零的值。看起来共享打印控制器就是这样的值之一。打开UIPrintInteractionController的标头的Swift版本,我看到:
class func sharedPrintController() -> UIPrintInteractionController?
带有结尾问号的类型
UIPrintInteractionController?
表示sharedPrintController()
的返回值可以是UIPrintInteractionController的实例,也可以为nil。如果您确信在调用该方法的情况下,它将始终返回非null值,则可以立即强制将此可选值“解包”到UIPrintInteractionController的实例中:
var pic = UIPrintInteractionController.sharedPrintController()!
// the rest of your code
另一方面,如果您认为自己可能从该方法中获得零,则可以使用Swift的可选绑定语法来检查该情况,并仅在它不是nil时才继续使用
pic
:if let pic = UIPrintInteractionController.sharedPrintController() {
// the rest of your code
}
无论哪种方式,Xcode都告诉您,现在您需要处理以下事实:共享打印控制器在beta 7中作为可选值公开。