点击列表中的文本,然后推至其他屏幕(查看)swiftUI

时间:2020-02-03 08:23:47

标签: xcode swiftui swiftui-navigationlink

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

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

以下是它在NavigationLink中的显示方式的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分: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稍有不同,但它很有用且有效。