avatar

Charlie的博客

学习进步 学习进步 学习进步

  • 首页
  • 后端
  • 前端
  • 移动端
  • 操作系统
Home SwiftUI开发必学!List实现左滑删除、位置移动!
文章

SwiftUI开发必学!List实现左滑删除、位置移动!

Posted 2024-04-11 Updated 2024-11- 18
By Administrator
4~5 min read

B站视频:https://www.bilibili.com/video/BV1pt421J7LZ
学会如何利用SwiftUI的List组件实现对列表内容的左滑删除和位置移动!

import SwiftUI

struct ContentView: View {
    @State private var colorList: [Color] = [.pink, .green, .purple, .yellow, .orange]
    @State private var isEditing = false
    var body: some View {
        NavigationView {
            List {
                ForEach(colorList, id: \.self) { color in
                    ItemView(color: color)
                }
                .onDelete(perform: { indexSet in
                    colorList.remove(atOffsets: indexSet)
                })
                .onMove(perform: { indices, newOffset in
                    colorList.move(fromOffsets: indices, toOffset: newOffset)
                })
            }
            .navigationTitle("List")
            .navigationBarItems(trailing: MyEditButton(isEditing: $isEditing))
            .environment(\.editMode, .constant(isEditing ? .active : .inactive))
        }
        
    }
}

struct ItemView: View {
    @State var color: Color
    var body: some View {
        HStack {
            Circle()
                .frame(width: 45)
            VStack (alignment: .leading, content: {
                RoundedRectangle(cornerRadius: 5)
                    .frame(width: 150, height: 5)
                RoundedRectangle(cornerRadius: 5)
                    .frame(width: 100, height: 5)
            })
            Spacer()
        }
        .foregroundColor(color)
    }
}

struct MyEditButton: View {
    @Binding var isEditing: Bool
    var body: some View {
        Button(action: {
            withAnimation {
                isEditing.toggle()
            }
        }, label: {
            Text(isEditing ? "Done" : "Edit")
        })
    }
}



#Preview {
    ContentView()
}

移动端
Swift
License:  CC BY 4.0
Share

Further Reading

May 19, 2024

复刻iOS圆环时间选择器

通过SwiftUI复刻iOS圆环时间选择器 Replicating iOS circular time picker with SwiftUI

May 8, 2024

打造可滑动切换的顶部TabBar

在SwiftUI应用中,实现一个带有可滑动切换的顶部TabBar是一个常见的需求。本文将介绍如何使用SwiftUI创建一个具有这种功能的界面。

Apr 27, 2024

SwiftUI与Alamofire结合:表单的POST提交

在本篇博客中,我们将详细介绍如何在SwiftUI中创建一个表单,并使用Alamofire库来处理表单的提交功能。这是一个极好的实例,帮助初学者了解SwiftUI界面构建与网络通信的整合应用。

OLDER

SwiftUI仿照Apple Music制作全屏过渡动效

NEWER

SwiftUI中实现List下拉刷新

Recently Updated

  • iptables规则持久化
  • Win11的OOBE阶段启用Administrator账户并跳过账户创建步骤
  • 复刻iOS圆环时间选择器
  • 打造可滑动切换的顶部TabBar
  • Java Lambda表达式:让你的代码像喝了红牛一样飞起来!

Trending Tags

iOS HTML macOS Redis Java JS Swift Windows Linux JDK

Contents

©2025 Charlie的博客. Some rights reserved.

Using the Halo theme Chirpy