我在不按SwiftUI应用中的按钮的情况下切换到另一个视图时遇到问题。 我可以举许多我想做的事的例子: 1-想象一个登录表单,我们需要填写两个文本字段:用户名和密码。完美搭配时,我们会自动通过身份验证。 2-现在举我的例子。我有这种看法:
我想做的事情:当我在列表中选择一行(例如Lyon-Perrache TGV)并且两个文本字段都不为空时,我将被重定向到另一个视图。
有许多示例可以帮助您了解如何从另一个视图移至视图,但是始终要单击..(使用NavigationLink) 在填充两个文本字段以及从列表中选择目标文本字段时,我需要以编程方式准确地执行此操作。
这是我的代码的一部分:
import SwiftUI
struct Search: View {
@ObservedObject var webservice = Webservice()
@State var Depart: String = ""
@State var Destination: String = ""
@State var listStation = [Station]()
@State var predictedValues: Array<String> = []
@State var isBeingEditedDeparture: Bool = false
@State var isBeingEditedDestination: Bool = false
@State var hey: Bool = false
@State var activate: Bool = false
init() {
UITableView.appearance().showsVerticalScrollIndicator = false
UITableView.appearance().backgroundColor = .clear
UITableViewCell.appearance().backgroundColor = .clear
//UITableView.appearance().separatorColor = .clear
}
var body: some View {
VStack(alignment: .leading){
PredictingTextField(listStation: self.$listStation , predictedValues: self.$predictedValues,
Depart: self.$Depart, Destination: self.$Destination, isBeingEditedDeparture:
self.$isBeingEditedDeparture, isBeingEditedDestination: self.$isBeingEditedDestination )
.textFieldStyle(RoundedBorderTextFieldStyle())
List() {
ForEach(self.predictedValues, id: \.self){ value in
Text(value)
.onTapGesture {
if(self.isBeingEditedDeparture == true)
{
self.Depart = value
}
else{
self.Destination = value
self.activate = true
}
}
}
}.padding(.top, 10)
}
}
我已声明一个名为“ activate”的变量为移动到新View的触发点。 当我们在列表中为“目标”文本字段选择一行时,它等于true。
我该怎么做才能进一步?
提前谢谢!
答案 0 :(得分:1)
您可以将NavigationLink
与isActive
参数一起使用。当您将此参数设置为true
时,它将显示一个NewView
:
@State var activated: Bool = false
NavigationLink(destination: NewView(), isActive: $activated) {
EmptyView()
}
然后,您需要将NavigationLink
放在NavigationView
中,以使其正常工作。