SwiftUI:如何让列表视图中的图像与列表项的操作不同?

Posted

技术标签:

【中文标题】SwiftUI:如何让列表视图中的图像与列表项的操作不同?【英文标题】:SwiftUI: how to have image in list view not have same action as list item? 【发布时间】:2021-05-31 14:14:06 【问题描述】:

我在视图中有一个列表。在列表中,items 被迭代以填充列表。当您单击每个列表项时,我想导航到另一个视图。 这按预期工作,但我希望在每个列表项中都有一个由圆圈表示的Button,可以在不导航到第二个视图的情况下独立单击。现在,单击圆圈只会将我带到第二个视图。我怎样才能做到这一点?

var body: some View 
    NavigationView 
        List 
            ForEach(items)  item in
                NavigationLink(
                    destination: OtherView(name: "test"),
                    label: 
                       Text("Navigate")
                    )
                HStack 
                    Image("1")
                        .resizable()
                        .frame(width: 32.0, height: 32.0)
                    Button(action: addItem) 
                        Label("Add Item", systemImage: "circle")
                    
                

            
        
    

【问题讨论】:

不确定,但我认为您应该将文本、图像和按钮全部放入带有 HStack 的导航链接中。在类似问题中帮助我的一件事是.buttonStyle(PlainButtonStyle()) 创建一个RowView(item:item),但你的ForEach 里面有什么。每个Item 都有一个RowView,您可以在其中单独操作。 【参考方案1】:

List 无法做到这一点。您可以在 ScrollView 中使用 VStackLazyVStack 作为替代解决方案

【讨论】:

以上是关于SwiftUI:如何让列表视图中的图像与列表项的操作不同?的主要内容,如果未能解决你的问题,请参考以下文章

navigationBarTitle 与 SwiftUI 中的列表标题重叠

SwiftUI:从列表中的项目获取切换状态

SwiftUI:如何让滚动视图包含完整列表长度

SwiftUI:如何在动态列表或 LazyVStack 中获取视图框架

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

如何使用 SwiftUI 中的图像修复 NavigationView 列表行中增加的高度"