【问题标题】:SwiftUI - Nested NavigationLinkSwiftUI - 嵌套导航链接
【发布时间】:2020-04-22 08:45:58
【问题描述】:

我的布局如下所示: Layout Drawing

有一个主视图,它是我的 NavigationView 的 Feed,然后我在里面有视图:PostList -> Post -> PostFooter 和 PostFooter 中的一个按钮,这将是我的 NavigationLink

struct Feed: View {
    var body: some View {
        NavigationView {
            PostList()
        }
    }
}

struct PostList: View {
    var body: some View {
        List {
            ForEach(....) {
                Post()
            }
        }
    }
}

struct Post: View {
    var body: some View {
        PostHeader()
        Image()
        PostFooter()
    }
}

struct PostFooter: View {
    var body: some View {
        NavigationLink(destination: Comment()) {
             Text("comments")
        }
    }
} 

但是当我点击 cmets 时,它会转到 Comment View 然后返回 Feed() 然后返回 Comment() 然后返回 Feed() 并出现奇怪的行为。

有没有更好的方法来处理这种情况?

更新

Navigation 现在可以工作了,但所有 Post 组件都是 Tapeable,而不仅仅是 PostFooter 中的 Text。 有什么方法可以禁用单元格上的点击手势并在一个单元格中添加多个 NavigationLink 以转到不同的页面?

【问题讨论】:

  • 您能提供工作示例来重现吗?
  • 您的代码非常适合我。您确定这里没有其他遗漏吗?
  • @Asperi 我已经更新了导航错误是由其他原因引起的帖子,但现在问题是所有单元格触发导航,而不仅仅是 PostFooter 中的文本

标签: ios swift swiftui swiftui-navigationlink


【解决方案1】:

如何以编程方式激活 NavigationLink,例如:

struct PostFooter: View {
    @State var commentActive: Bool = false
    var body: some View {
        VStack{
            Button("Comments") {
                commentActive = true
            }
            NavigationLink(destination: Comment(), isActive: $commentActive) {
                EmptyView()
            }
        }
    }
} 

上述的另一个好处是,您的 NavigationLink 目标视图可以接受 @ObservedObject@Binding 进行 cmets 编辑。

【讨论】:

    猜你喜欢
    • 2020-05-28
    • 1970-01-01
    • 2022-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多