如何将我的登录屏幕链接到我的主屏幕 SwiftUI
Posted
技术标签:
【中文标题】如何将我的登录屏幕链接到我的主屏幕 SwiftUI【英文标题】:How to link my Login screen to my Home screen SwiftUI 【发布时间】:2021-09-09 06:57:58 【问题描述】:我无法将登录屏幕链接到主屏幕。两者都是单独创建的,我使用 Button 功能创建了登录按钮,它会使用我登录的电子邮件进入另一个屏幕,但这不是我想要的,因为我希望我的主屏幕打开。
Button(action: model.login)
Text("LOGIN")
.fontWeight(.bold)
.foregroundColor(Color("Color1"))
.padding(.vertical)
.frame(width: UIScreen.main.bounds.width - 30)
.background(Color.white)
.clipShape(Capsule())
.padding(.top, 22)
我的 MainView 代码开始
struct MainView: View
@State private var isShowing = false
var body: some View
NavigationView
ZStack
【问题讨论】:
您好,欢迎来到 SO。你的问题很模糊。您能否提供minimal reproducible example,以便我们将其复制粘贴到您的 Xcode 中以更好地帮助您? 你可能想看看这个 SO 答案:***.com/questions/68757560/… 【参考方案1】:在您的 App
结构中添加一个 State
var isLoggedin
将其传递给 loginView
并从那里切换它。
这就是我的实现方式。
struct TestApp: App
@State var isLoggedin: Bool = false
var body: some Scene
WindowGroup
if isLoggedin
ContentView()
else
LoginView(isLoggedin: $isLoggedin)
struct LoginView: View
@Binding var isLoggedin: Bool
var body: some View
Button(action:
isLoggedin = true
, label:
Text("Login")
)
这样您就可以选择要显示的视图。 ContentView
到 LoginView
。
【讨论】:
这里不需要Binding也没有用例,你可以使用闭包来完成这项工作!或者您可以在不使用视图闭包的情况下将模型注入内容视图! Ps:您的答案在实际用例中不可用! 我会创建一个模型,我将同时注入LoginView
和ContentView
,其中包括isLoggedIn
。我将采用与上述代码相同的方法。这有什么问题...你能详细说明吗?
加载过程需要时间,不知道什么时候完成!然后我们首先需要一个完成处理程序,因为我们得到了完成处理程序,这意味着我们不需要绑定!因为我们肯定会收到在 ContentView 上工作的 newValue!
模型应该完成所有工作,不需要完成处理程序。一旦保存了用户的所有信息(用户名、电子邮件、图标、api 令牌......)isLoggedIn
应该切换。当这些被删除时应该切换回来......我仍然不明白问题是什么。 :)
你错过了我提到的两种不同的方式!阅读我最后的cmets!一种方法是注入模态或制作 StateObject,第二种方法是在没有任何模型的情况下处理视图!在每种方式中,我们肯定都需要完成处理程序,并且不需要以每种方式绑定!另外 100% 你的答案是不实用的。以上是关于如何将我的登录屏幕链接到我的主屏幕 SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法使用几何阅读器将我的 SwiftUI 图像的宽度定义为相对于屏幕尺寸?
当人们将我的移动网站保存到他们的主屏幕时,我该如何做到这一点,它会删除像 Kahoot.it 这样的 Safari?