我想将打印Button
添加到我的应用中以打印本地pdf
文件。
所以我添加了一个UIToolBar + UIBarButtonItem
并将其与以下代码链接:
@IBAction func printButton(_ sender: Any) {
let printController = UIPrintInteractionController.shared
let printInfo = UIPrintInfo(dictionary:nil)
printInfo.outputType = UIPrintInfo.OutputType.general
printInfo.jobName = (wkWebView.url?.absoluteString)!
printInfo.duplex = UIPrintInfo.Duplex.none
printInfo.orientation = UIPrintInfo.Orientation.portrait
printController.printPageRenderer = nil
printController.printingItems = nil
printController.printingItem = wkWebView.url!
printController.printInfo = printInfo
// printController.showsPageRange = true
printController.showsNumberOfCopies = true
printController.presentFromBarButtonItem(printButton, animated: true, completionHandler: nil)
}
在最后一行,我收到以下错误消息:
无法将类型'(Any)->()'的值转换为预期的参数类型 'UIBarButtonItem'
我尝试了不同的方法,但被卡住了。如果有人可以帮助我,那将是非常棒的。我认为这很容易解决,但对我而言暂时不是。
答案 0 :(得分:2)
您需要将参数作为条形按钮传递。但是,您正在传递的发件人,目前是“任何”。要么使用保护装置将其下调为条形按钮,如
guard let barButton = sender as? UIBarButtonItem else {
print("not bar button")
return
}
printController.presentFromBarButtonItem(barButton, animated: true, completionHandler: nil)
或将发件人更改为
IBAction func printButton(_ sender: UIBarButtonItem)
printController.presentFromBarButtonItem(sender, animated: true, completionHandler: nil)
答案 1 :(得分:0)
删除动作,而不是尝试与发件人addAction
IBAction func printButton(_ sender: Any) //instead of
IBAction func printButton(_ sender: UIBarButtonItem)