Как поставить условие для NavigationLink? SWIFTUI

Я хочу поставить условие для NavigationLink.

У 9X_nav меня есть две переменные и NavigationLink, как 9X_swiftui показано ниже.

 @State var score = 0 @State var target = 10 NavigationLink(destination: level2()) { Text("Next Level") } 

Есть ли способ позволить пользователю 9X_swiftui-bug перейти на следующий уровень, если результат 9X_nav больше целевого?

Спасибо.

8
0
2
Общее количество ответов: 2

Ответ #1

Ответ на вопрос: Как поставить условие для NavigationLink? SWIFTUI

Ну, ваш вопрос можно трактовать по-разному 9X_navigation ...

1) если вы хотите не показывать способность 9X_swiftui-bug двигаться дальше, пока количество очков 9X_navigationlink не станет больше этой цели, тогда это

if score > target { // link will appear to user only when true NavigationLink(destination: level2()) { Text("Next Level") } } 

2) если 9X_nav вы хотите показать ссылку, но не разрешаете 9X_navigation переход до тех пор, пока условие не станет 9X_navigation истинным, то это будет

 NavigationLink(destination: level2()) { Text("Next Level") }.disabled(score <= target) 

3) если вы хотите 9X_swiftui-bug автоматически переходить по ссылке, когда 9X_swiftui-bug условие истинно, то возможный вариант - (но обратите внимание - в таком случае вам нужно вручную управлять переходом назад-вперед или запретить назад и т. д. )

 NavigationLink(destination: level2(), isActive: .constant(score > target)) { Text("Next Level") } 
  • альтернативным вариантом является использование явного состояния для активации

21
0

Ответ #2

Ответ на вопрос: Как поставить условие для NavigationLink? SWIFTUI

Если вы хотите сохранить цвет и отображать 9X_navigationlink предупреждение при нажатии, вы можете использовать 9X_swiftui-bug следующий прием:

NavigationLink(destination: EmptyView()) { HStack { Circle() } } .contentShape(Rectangle()) .onTapGesture { print("ALERT MAYBE") } 

2
0