NavigationLink Swift UI Не отображается вид - PullRequest
0 голосов
/ 28 марта 2020

Когда приложение загружается и проверяется, уже вошел ли пользователь в систему, я хочу перейти к ListView, не показывая сначала другое представление, где пользователь должен нажать какой-то текст для просмотра списка.

Text("Why do I need this? Why not just show the view?") - Зачем это нужно? Почему я не могу просто положить sh на ListView()? импорт SwiftUI

struct ContentView: View {


    //MARK: Properties
    @ObservedObject var session = FirebaseSession()

    @State var selection: Int? = nil

    var body: some View {

        NavigationView {
            Group {
                if session.session != nil {
                    VStack {
                        ListView()
                        NavigationLink(destination: ListView(), tag: 1, selection: $selection) {
                            Text("Why do I need this? Why not just show the view?")
                        }
                    }
                } else {
                    LoginView()
                }
            }
            .onAppear(perform: getUser)
            .padding()
        }
    }

    //MARK: Functions
    func getUser() {
        session.listen()
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

1 Ответ

1 голос
/ 29 марта 2020

Если я правильно понимаю ваш вопрос, вы хотите сначала указать c, если ваш пользователь уже вошел в систему.

Почему бы вам не выполнить свой метод getUser () в SceneDelegate, и в зависимости от состояния пользователя вы устанавливаете первый вид, например, так:

if let windowScene = scene as? UIWindowScene {
        let window = UIWindow(windowScene: windowScene)

        var firstView = session.session != nil ? MainView() : LoginView()
        window.rootViewController = UIHostingController(rootView: firstView)

        self.window = window
        window.makeKeyAndVisible()
    }

Надеюсь, это поможет человеку!

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