2016-08-15 77 views
6

我想通過AirPrint顯示設備可以訪問的所有打印機列表。List accessible AirPrint Printers

我使用UIPrinterPickerController來解決問題。

有沒有反正顯示這個PickerController以自定義的方式,讓我們說餵養數據到UITableView

另外請注意,我打算使用這個應用程序在iPad只支持UIPrinterPickerController.presentFromRect(CGRect)

這裏是它的外觀現在。相反,這個彈出的應該有一個UITableView

Printer Popup

+0

我不知道是否有'printerPickerController:shouldShowPrinter:'你可以檢索所有的'UIPrinter' ,因爲它應該爲每臺打印機調用。你可能不得不調用顯示'UIPrinterPickerController'(並隱藏它,或者在屏幕的不可見部分,快速關閉,我不知道什麼時候應該調用委託方法,即如果cell將顯示或已經設置),以便調用'UIPrinterPickerControllerDelegate'的前一個方法。 – Larme

回答

2

NSNetServiceBrowser也正是因爲這個。

總之,你需要做的是:

1)設置對象爲NSNetServiceBrowserDelegate 2)創建一個NSNetServiceBrowser對象 3)分配使用browserObject.searchForServices(ofType: "_printer._tcp.", inDomain: "")將獲得各種反饋給委託 4)代表。

在我結束一個簡單的測試了:

didFind: Samsung C460 Series (SEC001174EDCB63) 

的委託方法:

func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) { 
    print("didFind: \(service.name)") 
} 
+0

迄今爲止看起來不錯。因爲我自己沒有任何AirPrint打印機 – smnk

+0

對於像我這樣試圖在沒有對Objective-C/swift的良好了解的情況下理解此答案的人,請注意,這通過https: //developer.apple.com/library/content/documentation/Networking/Conceptual/NSNetServiceProgGuide/Articles/BrowsingForServices.html。 –