Я хочу добавить экран входа в свое приложение, используя вход по умолчанию AWS (AWSMobileClient.default().showSignIn
) в приложении SwiftUI. Я смог найти документацию о том, как реализовать это, используя раскадровки, но ничего не нашел в SwiftUI. Насколько я понимаю, SwiftUI имеет AppDelegate.swift вместо ViewController, а класс AppDelegate не имеет члена navigationController, поэтому self.navigationController! выдает ошибку.
Я знаю, что мне нужно отредактировать мой класс AppDelegate и запустить AWSMobileClient.default().initialize
в пределах didFinishLaunchingWithOptions
, но у меня возникают проблемы с выяснением, как это сделать.
Я хочу сделать это в AppDelegate, чтобы мне не пришлось вносить существенные изменения в мой ContentView в приложении с вкладками. Это то, что у меня сейчас в верхней части моего класса AppDelegate.
import UIKit
import AWSMobileClient
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let navigationController = application.windows[0].rootViewController as! UINavigationController
initializeAWSMobileClient()
return true
}
func initializeAWSMobileClient(){
AWSMobileClient.default().initialize { (userState, error) in
if let uState = userState {
if uState == .signedOut {
AWSMobileClient.default().showSignIn(navigationController: self.navigationController!, { (uState2, error) in
print(uState2 ?? "none")
print(error?.localizedDescription ?? "no error")
})
}
}
}
}
В настоящее время это дает мне ошибки в AWSMobileClient.default().showSignIn
, потому что «класс AppDelegate не имеет члена navigationController» и предупреждение когда я пытаюсь инициализировать navigationController в didFinishLaunchingWithOptions
, потому что «Инициализация неизменяемого значения« navigationController »никогда не использовалась».
Есть мысли о том, как мне лучше структурировать свой класс AppDelegate для обработки входа в систему?
Спасибо!