Я пытаюсь реализовать с помощью SwiftUI главное представление (для игры), в нижней части которого есть рекламный баннер. Когда пользователь переходит из основного представления в представление настроек, тот же рекламный баннер должен оставаться там и продолжать показывать рекламу. Но когда пользователь переходит от основного представления к представлению игрового процесса, баннер не должен быть виден.
Я изо всех сил пытаюсь реализовать это с помощью NavigationView. В зависимости от того, как я позиционирую NavigationView в иерархии представлений, все NavigationLinks либо оставляют рекламный баннер на месте, либо скрывают его. Я попытался использовать только один NavigationView, а также поиграл с двумя разными NavigationView, как вложенными, так и не вложенными, но, похоже, ничего не работает должным образом ...
Ниже приведен простой фрагмент кода, который не работает, но дает вам над чем поработать. Обе ссылки оставляют красный рекламный баннер внизу. Если я перенесу код рекламного баннера (Spacer и HStack) во внутренний VStack, то обе ссылки перейдут в представление без рекламы.
Как сделать так, чтобы ссылки NavigationLinks работали по-разному в одном и том же представлении, когда одна заменяет весь экран, а другая оставляет рекламу, видимую ниже?
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
NavigationView {
VStack {
NavigationLink(destination: Text("No Ads")) {
Text("Link to a view with no Ads") // How to make this link to hide the Ad below?
}
NavigationLink(destination: Text("Ad visible")) {
Text("Link to a view with same Ad visible") // This link works as expected
} // Try moving the Ad banner right under here to see the other beavior
}
}
Spacer() // This below is the Ad banner
HStack {
Spacer()
Text("Ad is shown here")
.padding()
Spacer()
}
.background(Color.red)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}