Код: Выделить всё
let printController = UIPrintInteractionController.shared
class PrinterManager: NSObject, UIPrintInteractionControllerDelegate, UIPrinterPickerControllerDelegate {
let printerPickerController = UIPrinterPickerController(initiallySelectedPrinter: nil)
static let shared = PrinterManager()
private var viewController: UIViewController?
var didFinishPrintingClosure: (() -> Void)?
private override init() {}
// Set the view controller when initializing the PrinterManager
func setViewController(_ viewController: UIViewController) {
self.viewController = viewController
self.printerPickerController.delegate = self
}
}
Код: Выделить всё
func selectPrinter(sender: UIView, successCompletion: @escaping (Bool) -> (), errorCompletion: @escaping (Bool) -> ()) {
DispatchQueue.main.async {
if UIDevice.current.userInterfaceIdiom == .pad {
self.printerPickerController.present(from: sender.frame, in: self.viewController?.view ?? UIView(), animated: true) { (PickerVC, success, error) in
if success && error == nil {
if let printerUrl = PickerVC.selectedPrinter?.url {
let printerUrlPersistent = printerUrl.absoluteString
AppConstants.selectedPrinter = PickerVC.selectedPrinter
AppConstants.printerNamePersistent = PickerVC.selectedPrinter?.displayName
AppConstants.printerUrlPersistent = printerUrlPersistent
successCompletion(true)
} else {
errorCompletion(true)
}
} else {
errorCompletion(true)
}
}
} else {
self.printerPickerController.present(animated: true) { PickerVC, success, error in
if let selectedPrinter = PickerVC.selectedPrinter {
if let printerUrl = selectedPrinter.url as? URL { // crash
let printerUrlPersistent = printerUrl.absoluteString
AppConstants.selectedPrinter = selectedPrinter
AppConstants.printerNamePersistent = selectedPrinter.displayName
AppConstants.printerUrlPersistent = printerUrlPersistent
successCompletion(true)
} else {
errorCompletion(true)
}
} else {
errorCompletion(true)
}
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/782 ... me-network