gpt4 book ai didi

swiftui - 如何通过单击按钮转到另一个 View

转载 作者:行者123 更新时间:2023-12-04 16:57:30 25 4
gpt4 key购买 nike

我的代码中有一个按钮,我有一个名为 LogindView.swift 的文件

单击按钮时,我无法获取打开另一个 View 文件的代码。

任何人都可以给我一个关于如何做到这一点的例子。

在我的按钮操作中,我尝试编写 LogindView() 但我只是给了我一个警告。
“'LogindView' 初始值设定项的结果未使用”

    Button(action: {
// Do action
LogindView()
}, label: {
//** Label text
Text("Logind")
.font(.headline)
.padding(.all)
.foregroundColor(Color.white)
})
.background(Color.blue)

最佳答案

您基本上有 3 个选项可以根据需要在 View 之间转换。

第一 ,您可以使用 NavigationView .这将提供一个返回按钮并允许用户返回。请注意,当您不放置 NavigationLink 时,当前存在一些错误。内部 List按照 https://stackoverflow.com/a/57122621/3179416

import SwiftUI

struct MasterView: View {
var body: some View {
NavigationView {
List {
NavigationLink(destination: LoginView()) {
Text("Login")
}
}
.navigationBarTitle(Text("Master"))
}
}
}

struct LoginView: View {
var body: some View {
Text("Login View")
}
}

NavigationView

第二 ,您可以使用 .sheet 呈现模态.这将呈现一个出现在当前 View 顶部的模式,但用户可以通过向下拖动它来关闭它。
import SwiftUI

struct MasterView: View {
@State var isModal: Bool = false

var body: some View {
Button("Login") {
self.isModal = true
}.sheet(isPresented: $isModal, content: {
LoginView()
})
}
}

struct LoginView: View {
var body: some View {
Text("Login View")
}
}

.sheet

第三 ,您可以只使用 if语句将当前 View 更改为您的登录 View ,如下所示
import SwiftUI

struct MasterView: View {
@State var showLoginView: Bool = false

var body: some View {
VStack {
if showLoginView {
LoginView()
} else {
Button("Login") {
self.showLoginView = true
}
}
}
}
}

struct LoginView: View {
var body: some View {
Text("Login View")
}
}

Changing the view without animation

如果您想为此设置动画,以便过渡不会那么突然出现,您也可以这样做:
import SwiftUI

struct MasterView: View {
@State var showLoginView: Bool = false

var body: some View {
VStack {
if showLoginView {
LoginView()
.animation(.spring())
.transition(.slide)
} else {
Button("Login") {
withAnimation {
self.showLoginView = true
}
}.animation(.none)
}
}
}
}

struct LoginView: View {
var body: some View {
Text("Login View")
}
}

Transition with animation

关于swiftui - 如何通过单击按钮转到另一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57311918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com