Как поставить условие для 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 больше целевого?
Спасибо.
Ответ #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")
}
- альтернативным вариантом является использование явного состояния для активации
Ответ #2
Ответ на вопрос: Как поставить условие для NavigationLink? SWIFTUI
Если вы хотите сохранить цвет и отображать 9X_navigationlink предупреждение при нажатии, вы можете использовать 9X_swiftui-bug следующий прием:
NavigationLink(destination: EmptyView()) {
HStack {
Circle()
}
}
.contentShape(Rectangle())
.onTapGesture {
print("ALERT MAYBE")
}
-
2
-
1
-
1
-
10
-
3
-
8
-
3
-
1
-
2
-
7
-
2
-
7
-
22
-
9
-
11
-
9
-
14
-
3
-
14
-
4
-
5
-
2
-
7
-
9
-
5
-
5
-
1
-
2
-
5
-
3
-
4
-
6
-
4
-
11
-
3
-
3
-
7
-
4
-
1
-
3
-
3
-
4
-
6
-
2
-
1
-
5
-
2
-
2
-
6
-
1