Я хочу определить, соответствует ли пользователь предварительному условию, прежде чем я впущу его / ее. Если предварительное условие не выполнено, приложение отобразит actionSheet и покажет пользователю несколько способов разблокировать функцию. Он отлично работает, когда я нажимаю на текст. Но когда я нажимаю на пустое место в списке. Он просто пропускает привязку. И что странно, в моем собственном проекте привязка становится «истинной», даже если я установил для нее только ложь. Вот вопрос. Я использую правильный подход или я что-то пропустил? Или это ошибка? Спасибо.
struct ContentView: View {
@State var linkOne = false
@State var linkTwo = false
@State var linkThree = false
@State var actionOne = false
@State var actionTwo = false
@State var actionThree = false
var body: some View {
NavigationView{
List{
NavigationLink("Destination View One", destination: DestOneView(), isActive: self.$linkOne)
.actionSheet(isPresented: self.$actionOne) { () -> ActionSheet in
ActionSheet(title: Text("Hello"), message:Text("This is weird"), buttons: [ActionSheet.Button.cancel()])
}.onTapGesture {
self.actionOne = true
// self.linkOne = true
}
NavigationLink("Destination View Two", destination: DestTwoView(), isActive: self.$linkTwo)
.actionSheet(isPresented: self.$actionTwo) { () -> ActionSheet in
ActionSheet(title: Text("Hello"), message:Text("This is weird"), buttons: [ActionSheet.Button.cancel()])
}
.onTapGesture {
self.actionTwo = true
// self.linkTwo = true
}
NavigationLink("Destination View Three", destination: DestThreeView(), isActive: self.$linkThree)
.actionSheet(isPresented: self.$actionThree) { () -> ActionSheet in
ActionSheet(title: Text("Hello"), message:Text("This is weird"), buttons: [ActionSheet.Button.cancel()])
}
.onTapGesture {
self.actionThree = true
// self.linkThree = true
}
}
}
}
}
Три других вида.
struct DestOneView: View {
var body: some View {
Text("First View")
}
}
struct DestTwoView: View {
var body: some View {
Text("Second View")
}
}
struct DestThreeView: View {
var body: some View {
Text("Third View")
}
}