Как поставить условие в NavigationLink? SWIFTUI - PullRequest
1 голос
/ 01 марта 2020

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

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

  @State var score = 0
  @State var target = 10

NavigationLink(destination: level2()) {     
  Text("Next Level")
 }

Есть ли способ разрешить пользователю go перейти на следующий уровень, если оценка превышает целевой показатель?

Спасибо.

1 Ответ

4 голосов
/ 01 марта 2020

Что ж, ваш вопрос может быть истолкован по-разному ...

1) если вы не хотите показывать способность go дальше до тех пор, пока результат не станет больше цели, тогда это

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

2) если вы хотите показать ссылку, но не позволяете перемещаться до тех пор, пока условие не станет истинным, тогда это

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

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

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