Нажмите на текст в списке и pu sh на другой экран (просмотр) swiftUI - PullRequest
0 голосов
/ 03 февраля 2020

На мой взгляд, у меня есть список, в котором последний элемент - это кнопка переключения и текст в горизонтальном стеке. Я хочу добавить действие к некоторой части текста (этот текст похож на условия и политику конфиденциальности). но при добавлении NavigationLink для перемещения на другой экран он добавляет индикатор раскрытия с большим пространством между текстом и индикатором, и щелчок работает на всей строке. Есть ли какая-либо другая опция для pu sh на другой экран в swiftUI? В настоящее время я использую Xcode 11.1

var body: some View {
    NavigationView {
        List {
            NavigationLink(destination: TestView()) {
                Text("Test")
            }
        }
    }
}

Ниже приведен скриншот того, как это отображается с помощью NavigationLink:

enter image description here

1 Ответ

1 голос
/ 03 февраля 2020

Вы также можете использовать Button. Это код, который я использовал, чтобы заставить его работать. Я также добавил изображение, которое меняется, когда пользователь возвращается в список.

struct ContentView: View {
   @State var showTestView = false
   @State var imageName = "heart"
   var body: some View {
        List {
            HStack{
                Image(systemName: imageName)

                Button(action: {
                    self.showTestView.toggle()
                }) {
                    Text("Test")
                }
                .sheet(isPresented: self.$showTestView) { TestView(showTestView: self.$showTestView, imageName: self.$imageName) }
            }
        }
    }
}
struct TestView: View {
    @Binding var showTestView: Bool
    @Binding var imageName: String
    var body: some View {
        VStack{
            Button(action: {
                self.imageName = "heart.fill"
                self.showTestView.toggle()
            }) {
                Text("Cancel")
            }
        }   
    }
}

Эффект при представлении TestView будет немного отличаться от использования NavigationLink, но это полезно и работает.

...