这是我用于测试版6的Swift airprinting的代码,它运行良好:
@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)
}
}
当然,beta 7打破了它的可选类型' UIPrintInteractionController'没有打开;你的意思是用!或?? ??#34;在第一个变量线上。不幸的是,XCode建议修复无法修复它,而且我不够聪明,不能自己解决它!
答案 0 :(得分:3)
Xcode 6 beta 7审核了Cocoa Touch API的大部分内容,了解它如何暴露可选值 - 也就是那些可能为零的那些。看起来共享打印控制器就是这样一个值。打开UIPrintInteractionController的Swift版本的标题,我看到了:
class func sharedPrintController() -> UIPrintInteractionController?
带有尾随问号的类型 - UIPrintInteractionController?
- 表示sharedPrintController()
的返回值可能是UIPrintInteractionController的一个实例,或者它可能是nil。
如果您确信在您调用该方法的情况下,它将始终返回非零值,您可以立即强制将此可选值强制为"展开"进入UIPrintInteractionController的一个实例:
var pic = UIPrintInteractionController.sharedPrintController()!
// the rest of your code
另一方面,如果您认为自己可能从该方法中获得nil,则可以使用Swift的可选绑定语法来检查该情况并继续使用pic
只有它是非零的:
if let pic = UIPrintInteractionController.sharedPrintController() {
// the rest of your code
}
无论哪种方式,Xcode都告诉您现在需要处理共享打印控制器作为beta 7中的可选值公开的事实。