-1

在我看来,我有一个列表,其中最后一项是切换按钮和水平堆栈中的文本。我想在文本的某些部分添加操作(此文本类似于条款和隐私政策)。但是在添加 NavigationLink 以移动到其他屏幕时,它会在文本和指示符之间添加具有大空间的披露指示符,并且单击正在整个行上工作。swiftUI中还有其他选项可以推送到其他屏幕吗?我目前正在使用 Xcode 11.1

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

以下是使用 NavigationLink 显示的屏幕截图:

在此处输入图像描述

4

1 回答 1

1

您也可以使用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但它是有用且有效的。

于 2020-02-03T11:08:06.213 回答