SwiftUI - Изменить вид при выходе - PullRequest
0 голосов
/ 04 марта 2020

Я довольно новичок в кодировании, вопросы и ответы в stackoverflow до сих пор очень помогали. Я не могу найти ничего, связанного с моим вопросом, и я надеюсь, что кто-то знает, что делать.

По сути; Я создал приложение с SwiftUI, в котором пользователи могут хранить конфиденциальную информацию. Я использую наблюдаемый объект с motherView, который слушает наблюдаемый объект, чтобы позволить пользователю войти в систему. Поскольку пользователь будет хранить конфиденциальную информацию, было бы идеально, если бы я мог изменить наблюдаемый объект при выходе из приложения, поэтому приложение возвращается к экрану входа в систему (приложение будет «заблокировано»).

Легенда сцены содержит функцию, которая запускается при выходе пользователя из приложения:

func sceneDidEnterBackground(_ scene: UIScene) {
    // Called as the scene transitions from the foreground to the background.
    // Use this method to save data, release shared resources, and store enough scene-specific state information
    // to restore the scene back to its current state.
    // Save changes in the application's managed object context when the application transitions to the background.
    (UIApplication.shared.delegate as? AppDelegate)?.saveContext()
}

Мой наблюдаемый объект (который я хочу изменить при выходе) выглядит следующим образом:

class ViewRouter: ObservableObject {

let objectWillChange = PassthroughSubject<ViewRouter,Never>()

var currentPage: String = "page1" {
    didSet {
        objectWillChange.send(self)
    }
}}

page1 относится в MotherView для моего LoginView. Если пользователь вводит правильный пароль, currentPage = page2, и представление меняется. Я хочу, чтобы это go вернуться на страницу 1 при выходе из приложения. Однако я не могу объявить @ObservedObject var viewRouter: ViewRouter в моем делегате сцены, чтобы затем добавить self.viewRouter.currentPage = "page1" к функции sceneDidEnterBackground.

Если я объявляю наблюдаемый объект делегированной сцене, это выдает класс "ошибки SceneDelegate не имеет инициализаторов ".

У кого-нибудь есть идеи, как заставить это работать или как обойти это?

Спасибо!

...