swiftUI: перейдите на главный экран после завершения входа в систему. Навигация по представлениям нажатием кнопки - PullRequest
1 голос
/ 24 октября 2019

Я делаю экран входа. после нажатия кнопки входа я сделаю вызов API для ответа и перенаправлю пользователя на главный экран.

Q - Как перейти от одного просмотра к другому с помощью нажатия кнопки с некоторым действием.

Я пробовал это, Программно перейти к новому представлению в SwiftUI

Но я получаю сообщение об ошибке типа

"Функция объявляетнепрозрачный тип возврата, но в его теле нет операторов возврата, из которых можно вывести базовый тип "

Пожалуйста, помогите мне разрешить его.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Существует проблема с some View банкоматом (надеюсь, он будет исправлен в ближайшее время).

Чтобы использовать размещенный код, вам необходимо написать что-то вроде:

struct ContentView: View {

    @EnvironmentObject var userAuth: UserAuth 

    var body: some View {
        if !userAuth.isLoggedin {
            return AnyView(LoginView())
        } else {
            return AnyView(NextView())
        }

    }
}

В списке, на момент написания, это было единственное, что работало для меня - как для тела, так и для группы.

Ссылка на будущее: дата 24 октября 2019 года.

0 голосов
/ 24 октября 2019

В качестве альтернативы посмотрите на SceneDelgate.swift, где вы можете установить корневой вид ключевого окна на все, что вы хотите.

В вашей ситуации, когда успешный вход в систему, вы можете сигнализировать об изменении состояния на SceneDelegate (например, уведомлением). Затем приложение должно установить контроллер корневого представления для вашего основного представления (как UIHostingController).

Например:

В вашем SceneDelegate классе добавить: var currentScene: UIScene? // need to keep reference

Затем внутри func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions)

Сохранить ссылку на сценув объявленной выше переменной.

self.currentScene = scene

Затем добавьте слушатель, когда вы хотите изменить окно ключа с новым видом:

 var keyWindow: UIWindow?

 NotificationCenter.default.addObserver(forName: .newUser, object: nil, queue: .main) { [weak self] (notification) in

      guard let windowScene = self?.currentScene as? UIWindowScene else { return }

      keyWindow = UIWindow(windowScene: windowScene)
      keyWindow?.rootViewController = UIHostingController(rootView: Text("hello"))
      keyWindow?.makeKeyAndVisible()

    }

Простоустановите уведомление, чтобы публиковать, когда вам нужно, и замените Text любым просмотром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...