首页 > 解决方案 > SwiftUI 按钮作为 EditButton

问题描述

我如何使用像这样的按钮EditButton
或者我如何使用按钮从列表中激活编辑模式?
或者我如何从EditButton“编辑”/“完成”更改名称?

标签: swiftbuttonswiftui

解决方案


下面的实现将EditButton's 的功能替换为Button

import SwiftUI

struct ContentView: View {

    @State var isEditing = false
    @State var selection = Set<String>()

    var names = ["Karl", "Hans", "Faustao"]

    var body: some View {
        NavigationView {
            VStack {
                List(names, id: \.self, selection: $selection) { name in
                    Text(name)
                }
                .navigationBarTitle("Names")
                .environment(\.editMode, .constant(self.isEditing ? EditMode.active : EditMode.inactive)).animation(Animation.spring())
                Button(action: {
                    self.isEditing.toggle()
                }) {
                    Text(isEditing ? "Done" : "Edit")
                        .frame(width: 80, height: 40)
                }
                .background(Color.yellow)
            }
            .padding(.bottom)
        }
    }
}

#if DEBUG
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

结果

结果

但是,通过这样做,选择处理需要由我们自己来实现(这可能是也可能不是问题)。

不幸的是,此时没有太多文档: https ://developer.apple.com/documentation/swiftui/list/3367016-init


推荐阅读