如何通过单击按钮转到另一个视图
Posted
技术标签:
【中文标题】如何通过单击按钮转到另一个视图【英文标题】:How to go to another view with button click 【发布时间】:2019-08-01 15:01:20 【问题描述】:我的代码中有一个按钮,我有一个名为 LogindView.swift 的文件
单击按钮时,我无法获取打开另一个视图文件的代码。
谁能给我一个例子来说明如何做到这一点。
在我的按钮操作中,我尝试编写 LogindView(),但我只是给了我一个警告。 "'LogindView' 初始化程序的结果未使用"
Button(action:
// Do action
LogindView()
, label:
//** Label text
Text("Logind")
.font(.headline)
.padding(.all)
.foregroundColor(Color.white)
)
.background(Color.blue)
【问题讨论】:
好笑!我确实输入了一些代码。但它就在这里。 Button(action: // 执行操作 LogindView() , label: //** 标签文本 Text("Logind") .font(.headline) .padding(.all) .foregroundColor(Color.white) ) .background(Color.blue) LogindView() 给了我这个警告。 "'LogindView' 初始化程序的结果未使用" @JensThomsen 我建议将该代码添加到您的问题中-此处的评论不可读 在我的问题中添加了代码。 【参考方案1】:您基本上有 3 个选项可以根据您的需要在视图之间进行转换。
首先,您可以使用NavigationView
。这将提供一个后退按钮,并允许用户返回。请注意,当您没有按照https://***.com/a/57122621/3179416 将NavigationLink
放入List
内时,当前存在一些错误
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")
第二,您可以使用.sheet
呈现模态。这将呈现一个显示在当前视图顶部的模式,但用户可以通过将其向下拖动来将其关闭。
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")
第三,您可以像这样使用if
语句将当前视图更改为您的登录视图
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")
如果您想对此进行动画处理,以便过渡不会突然出现,您也可以这样做:
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")
【讨论】:
@JensThomsen 尝试上面的详细示例 还有 .fullScreenCover 选项,使用方式与您解释的模态表相同。【参考方案2】:您可以使用导航链接代替按钮
var body: some View
VStack
Text("Title")
.font(.headline)
Image("myimage").clipShape(Circle())
Text("mytext").font(.title)
NavigationLink(destination: AnotherView())
Image(systemName: "person.circle").imageScale(.large)
【讨论】:
正确答案。 按钮在哪里?以上是关于如何通过单击按钮转到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章