我的代码中有一个按钮,并且有一个名为LogindView.swift的文件
单击按钮时,我无法获取打开另一个视图文件的代码。
谁能给我一个例子。
在我的按钮操作中,我尝试编写LogindView(),但我只是警告我。“'LogindView'初始化程序的结果未使用”
Button(action: {
// Do action
LogindView()
}, label: {
//** Label text
Text("Logind")
.font(.headline)
.padding(.all)
.foregroundColor(Color.white)
})
.background(Color.blue)
Run Code Online (Sandbox Code Playgroud)
您基本上可以根据需要在视图之间切换的3个选项。
首先,您可以使用NavigationView。这将提供一个后退按钮,并允许用户返回。请注意,按照/sf/answers/3998583501/的说明,当前不存在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")
}
}
Run Code Online (Sandbox Code Playgroud)
其次,您可以使用来呈现模态.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")
}
}
Run Code Online (Sandbox Code Playgroud)
第三,您可以使用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")
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想对此进行动画处理,以使过渡不会突然出现,您还可以执行以下操作:
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")
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用导航链接代替按钮
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)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |