在 SwiftUI 中使列表行可选

Posted

技术标签:

【中文标题】在 SwiftUI 中使列表行可选【英文标题】:Make a list row selectable in SwiftUI 【发布时间】:2019-07-17 09:28:00 【问题描述】:

我正在 SwiftUI 中创建一个包含自定义行的列表。当我点击其中一个时,我希望该行变为浅灰色,直到检测到另一个点击。

简单的非自定义列表也不会发生这种情况。

这是我的清单:

List
        ForEach(blocks) block in
            BlockRow(block: block)
        
        .onDelete(perform: delete)
        .onMove(perform: day.move)

当我点击其中一项时,什么也没有发生。如果我使用 storyBoards 创建一个简单的列表,我会得到我想要的行为:

【问题讨论】:

【参考方案1】:

嘿,所以你在 3 个月前问过这个问题,所以我希望你能在某个地方得到答案,或者从那时起就想出来了,但是为了获得好东西来使按钮可点击,我能够使用它来让它工作,

List 
    Button (action: 
        //Whatever action you want to perform
    ) 
        //Code to present as the cell
    

我可能会根据您的代码尝试以下操作,

List (blocks)  block in
  Button (action: 
    //perform button action
  ) 
    //How the cell should look
    BlockRow(block: block)
  

.onAppear()
.onDelete()

【讨论】:

以上是关于在 SwiftUI 中使列表行可选的主要内容,如果未能解决你的问题,请参考以下文章

如何在 tvOS 中使 SwiftUI 列表可滚动

如何在 SwiftUI 中使整个列表行成为 NavigationLink

如何在 SwiftUI List 中制作整行可触摸区域?

如何禁用 SwiftUI 的默认行为?

如何在 SwiftUI 中使 UIViewRepresentable 在 tvOS 上具有焦点?

如何在 SwiftUI 中使视图的高度从 0 动画到高度?