как заставить 'onTapGesture' начать другое представление - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть NavigationView с карточкой информации, а затем списком, я хотел бы коснуться информации и go для другого просмотра, или вы можете нажать на элемент списка и посмотреть дополнительную информацию о предмете. Поэтому, если я добавлю модификатор onTapGesture к виду карты, он напечатает «нажатие onTap», но я не могу понять, как заставить его запустить другой вид

  var body: some View {
    NavigationView {
        VStack {
            TopResultsCard(games: self.games)
                .padding(.top, 10)
                .onTapGesture({
                    print("onTap tapped")
                })
            ResultsListItem(games: self.games)
        }.navigationBarTitle("", displayMode: .inline)
            .navigationBarItems(trailing:
                Button(action: {
                    self.showNewResult.toggle()
                }) {
                    Image(systemName: "plus.circle")
                    Text("Add result")
                }
                .sheet(isPresented: $showNewResult) {AddResultView(games: self.games)}
                .font(.caption))
    }
}

1 Ответ

0 голосов
/ 21 апреля 2020

Здесь возможен подход. Используйте вид цели вместо демо Text("Next view here") ниже.

@State private var isActive = false

var body: some View {
    NavigationView {
        VStack {
            TopResultsCard(games: self.games)
                .padding(.top, 10)
                .onTapGesture { self.isActive.toggle() }
                .background(NavigationLink(destination:
                    Text("Next view here"), isActive: $isActive) { EmptyView() })

            ResultsListItem(games: self.games)
        }.navigationBarTitle("", displayMode: .inline)
            .navigationBarItems(trailing:
                Button(action: {
                    self.showNewResult.toggle()
                }) {
                    Image(systemName: "plus.circle")
                    Text("Add result")
                }
                .sheet(isPresented: $showNewResult) {AddResultView(games: self.games)}
                .font(.caption))
    }
}
...