В представлении SwiftUI присутствуют ошибки UIKit ViewController ⇐ IOS
В представлении SwiftUI присутствуют ошибки UIKit ViewController
Много раз нам требуется открыть представление, которое должно быть представлено из UIViewController в представлении SwiftUI. Яркими примерами такого подхода являются UIDocumentInteractionController, а менее известными являются SwiftyDropbox, позволяющий открыть экран входа в Dropbox в Safari для аутентификации. Распространенный метод — создать UIViewController по требованию в подклассе UIViewControllerRepresentable и представить из него контроллер представления. Но мне это никогда не помогало.
struct DropboxView: UIViewControllerRepresentable { псевдоним типа UIViewControllerType = UIViewController @Binding var isShown: Bool func updateUIViewController(_ uiViewController: UIViewController, context: Context) { если isShown { letscopeRequest = ScopeRequest(scopeType: .user, области: ["files.content.write"], includeGrantedScopes: false) DropboxClientsManager.authorizeFromControllerV2( UIApplication.shared, контроллер: uiViewController, loadingStatusDelegate: ноль, openURL: { (url: URL) -> Void в UIApplication.shared.open(url, options: [:],completeHandler: nil) }, областьRequest: областьRequest) } } func makeUIViewController(context _: Self.Context) -> UIViewController { вернуть UIViewController() } } Когда я вызываю такое представление из представления SwiftUI, используя модификатор, например:
.fullScreenCover(isPresented: $showDropboxLoginView) { DropboxView (isShown: $showDropboxLoginView) } Я получаю две ошибки:
Невозможно использовать методы сцены для URL, NSUserActivity и других внешних событий без использования жизненного цикла SwiftUI. Без жизненного цикла SwiftUI реклама и обработка внешних событий тратят ресурсы и будут иметь непредсказуемые результаты. и
Попытка представить в (из ), представление которого отсутствует в иерархии окон. Интересно, как представить такие контроллеры представления из представления SwiftUI?
Много раз нам требуется открыть представление, которое должно быть представлено из UIViewController в представлении SwiftUI. Яркими примерами такого подхода являются UIDocumentInteractionController, а менее известными являются SwiftyDropbox, позволяющий открыть экран входа в Dropbox в Safari для аутентификации. Распространенный метод — создать UIViewController по требованию в подклассе UIViewControllerRepresentable и представить из него контроллер представления. Но мне это никогда не помогало.
struct DropboxView: UIViewControllerRepresentable { псевдоним типа UIViewControllerType = UIViewController @Binding var isShown: Bool func updateUIViewController(_ uiViewController: UIViewController, context: Context) { если isShown { letscopeRequest = ScopeRequest(scopeType: .user, области: ["files.content.write"], includeGrantedScopes: false) DropboxClientsManager.authorizeFromControllerV2( UIApplication.shared, контроллер: uiViewController, loadingStatusDelegate: ноль, openURL: { (url: URL) -> Void в UIApplication.shared.open(url, options: [:],completeHandler: nil) }, областьRequest: областьRequest) } } func makeUIViewController(context _: Self.Context) -> UIViewController { вернуть UIViewController() } } Когда я вызываю такое представление из представления SwiftUI, используя модификатор, например:
.fullScreenCover(isPresented: $showDropboxLoginView) { DropboxView (isShown: $showDropboxLoginView) } Я получаю две ошибки:
Невозможно использовать методы сцены для URL, NSUserActivity и других внешних событий без использования жизненного цикла SwiftUI. Без жизненного цикла SwiftUI реклама и обработка внешних событий тратят ресурсы и будут иметь непредсказуемые результаты. и
Попытка представить в (из ), представление которого отсутствует в иерархии окон. Интересно, как представить такие контроллеры представления из представления SwiftUI?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение