【问题标题】:Tap on a text in List and push to other screen(view) swiftUI点击列表中的文本并推送到其他屏幕(视图)swiftUI
【发布时间】:2020-05-18 23:42:56
【问题描述】:

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

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

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

【问题讨论】:

    标签: xcode swiftui swiftui-navigationlink


    【解决方案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 时会有些不同,但它很有用且有效。

    【讨论】:

    • 但我想要的是推送新屏幕的行为,而不是当前显示的。
    • 推送另一个视图的唯一方法是使用NavigationLink。如果您想要在同一个单元格上使用 2 个NavigationLinks,我发现这个link 可能很有用。
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2020-07-27
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多