Я только начал экспериментировать с Катализатором. Мое приложение представляет собой приложение для браузера документов.
Стандартный диалог поиска MacOS действительно запускается при нажатии соответствующей кнопки. Главное окно приложения полностью исчезает, когда появляется диалоговое окно Finder, если только я не выберу в IB режим отображения контроллера просмотра документов в «автоматическом» режиме.
Отмена операции действительно возвращает главное окно.
Однако выбор файла приведет к появлению пустого экрана и безрезультатно. Небольшая отладка показала, что ни одна из функций выбора файла не вызывается, и я реализовал все из них:
func documentBrowser(_ controller: UIDocumentBrowserViewController, didPickDocumentURLs documentURLs: [URL]) {...}
func documentBrowser(_ controller: UIDocumentBrowserViewController, didImportDocumentAt sourceURL: URL, toDestinationURL destinationURL: URL) {...}
func documentBrowser(_ controller: UIDocumentBrowserViewController, failedToImportDocumentAt documentURL: URL, error: Error?) {...}
Есть ли другая функция или дескриптор, используемый в Catalyst? Я ничего не нашел в документации.
РЕДАКТИРОВАТЬ: я должен уточнить, что я манипулировал приложением, чтобы представить DocumentViewController перед DocumentBrowserViewController, хотя Apple требует, чтобы DocumentBrowserViewController был начальным контроллером представления. Я сделал это, изменив делегат приложения:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
// Set the documentViewController to appear first
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController = storyboard.instantiateViewController(withIdentifier: "main")
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
return true
}
Удаление этого по-прежнему ничего не меняет. И проект по умолчанию, созданный из шаблона браузера документов, кажется, работает. Что может помешать вызову этих методов?