首页 > 解决方案 > 如何在 SwiftUI 中全屏显示视图?

问题描述

我工作到登录view,现在我想呈现view登录后,但我不希望用户有可能返回登录view。在UIkit我用过present(),但似乎在SwiftUI presentation(_ modal: Modal?)view占用整个屏幕。Navigation也不是一个选择。

谢谢!

标签: iosviewuikitswiftui

解决方案


我不希望用户有可能返回登录视图

在这种情况下,您不应该远离登录视图,而是完全替换它。

您可以通过有条件地构建登录视图或“应用程序视图”来做到这一点。

像这样的东西...

// create the full screen login view
struct LoginView: View {
    // ...
}

//create the full screen app veiw
struct AppView: View {
    // ...
}

// create the view that swaps between them
struct StartView: View {
    @EnvironmentObject var isLoggedIn: Bool // you might not want to use this specifically.

    var body: some View {
        isLoggedIn ? AppView() : LoginView()
    }
}

通过使用这样的模式,您不会呈现或离开登录视图,而是完全替换它,因此它根本不再位于视图层次结构中。

这可确保用户无法导航回登录屏幕。

同样...通过使用@EnvironmentObject这样的方法,您可以稍后对其进行编辑(退出),您的应用程序将自动返回登录屏幕。


推荐阅读