Да, это не так тривиально, поэтому здесь возможен подход. Протестировано и работает с Xcode 11.4 / iOS 13.4
Примечание: убедитесь, что вы активировали Печать в проекте Подпись и возможности Настройки.
I у вас нет принтеров AirPrint, так что ... просто ищите

Демонстрационный код:
struct DemoPrinterPicker: View {
@State private var showPicker = false
var body: some View {
Button("Select Printer") {
self.showPicker.toggle()
}
.background(PrinterPickerController(showPrinterPicker: $showPicker))
}
}
SwiftUI представимый ( просто показывает сборщик принтеров, что делать с выбранным принтером - ваша ответственность)
struct PrinterPickerController: UIViewControllerRepresentable {
@Binding var showPrinterPicker: Bool
fileprivate let controller = UIViewController()
func makeUIViewController(context: Context) -> UIViewController {
controller
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
if showPrinterPicker && context.coordinator.activePicker == nil {
let picker = UIPrinterPickerController(initiallySelectedPrinter: nil)
context.coordinator.activePicker = picker
picker.delegate = context.coordinator
picker.present(animated: true) { (picker, flag, error) in
if let printer = picker.selectedPrinter {
// << do anything needed with printer
}
context.coordinator.activePicker = nil
self.showPrinterPicker = false
}
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, UIPrinterPickerControllerDelegate {
let owner: PrinterPickerController
var activePicker: UIPrinterPickerController?
init(_ owner: PrinterPickerController) {
self.owner = owner
}
func printerPickerControllerParentViewController(_ printerPickerController: UIPrinterPickerController) -> UIViewController? {
self.owner.controller
}
}
typealias UIViewControllerType = UIViewController
}