2 Star 23 Fork 10

小弟调调/swiftui-example

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.github
.idoc
assets
example
accessibility
advanced-state
alerts-and-menus
animation
appendix-a
composing-views
containers
cross-platform
data
drawing
forms
images-shapes-media
introduction
lists
demo1
demo10
demo11
demo12
demo13
demo2
demo3
demo4
Demo
README.md
demo5
demo6
demo7
demo8
demo9
presenting-views
quick-start
responding-to-events
stacks-grids-scrollviews
taps-and-gestures
tooling
transforming-views
user-interface-controls
view-layout
working-with-static-text
cheat-sheet.md
.gitattributes
.gitignore
LICENSE
README.md
idoc.chapters.yml
idoc.yml
package.json
renovate.json
克隆/下载
README.md 1.46 KB
一键复制 编辑 原始数据 按行查看 历史

如何让用户从列表中删除行?

通过将 onDelete(perform:) 处理程序附加到您的部分或全部数据,SwiftUI 使用户轻松滑动即可删除行。 该处理程序需要具有一个特定的签名,该签名接受要删除的多个索引,如下所示:

func delete(at offsets: IndexSet) {
    // delete the objects here
}

在其中,您通常需要调用 Swiftremove(atOffsets:) 方法来从序列中删除请求的行。 由于 SwiftUI 正在监视您的状态,因此您所做的任何更改都会自动反映在您的UI中。

例如,此代码创建一个包含三个项目的列表的 ContentView 结构,然后附加一个 onDelete(perform:) 修饰符,该修饰符从列表中删除任何项目:

struct ContentView: View {
    @State private var users = ["Paul", "Taylor", "Adele"]

    var body: some View {
        NavigationView {
            List {
                ForEach(users, id: \.self) { user in
                    Text(user)
                }
                .onDelete(perform: delete)
            }
        }
    }

    func delete(at offsets: IndexSet) {
        users.remove(atOffsets: offsets)
    }
}

如果您运行该代码,就会发现可以滑动删除列表中的任何行。

提示:如果您想知道,onDelete() 可以作为 ForEach 的修饰符,但不能直接作为 List 的修饰符。 这是因为列表可以包含静态行,但是这些静态行当然不能删除。

Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Swift
1
https://gitee.com/jaywcjlove/swiftui-example.git
git@gitee.com:jaywcjlove/swiftui-example.git
jaywcjlove
swiftui-example
swiftui-example
main

搜索帮助