繁体   English   中英

SwiftUI 列出多个自定义行编辑选项

[英]SwiftUI list multiple custom row edit option

我需要 SwiftUI 列表的多行编辑选项

  1. 我在 NavigationView 中的登录屏幕
  2. 登录后主屏幕是标签栏
  3. 选项卡之一是列表视图(我需要此列表的编辑选项)

这是我的总代码

第一个屏幕我只有带有文本字段和按钮的简单导航视图。

struct HomeView: View {
    
    @ObservedObject var viewModel = HomeViewModel()
    
    //@State var title = "Home"
    
    var body: some View {
        TabView(selection: $viewModel.selectedView) {
            TasksView()
            .tabItem {
                Image(“one”)
                Text(“one”)
            }.tag(0)
            DashboardView()
            .tabItem {
                Image(“two”)
                Text(“two”)
            }.tag(1)
            NotifcationsView()
            .tabItem {
                Image(“some”)
                Text(“some”)
            }.tag(2)
            SettingsView()
            .tabItem {
                Image(“set”)
                Text("Se")
            }.tag(3)
        }
        .navigationBarBackButtonHidden(true)
        .navigationBarItems(trailing: EditButton())
        .navigationBarTitle(Text(viewModel.title) , displayMode: .inline)
    }
    
}


struct TasksView: View {
    
    @ObservedObject var viewModel = TViewModel()
    @State var segmentSelection = 0
    @State var selection = Set<String>()
//    @State var editMode = EditMode.active
    
    var body: some View {
        VStack {
            Picker(selection: $viewModel.segmentSelection, label: Text("")) {
                ForEach(0..<self.viewModel.segments.count) {index in
                    Text(self.viewModel.segments[index]).tag(index)
                }
            }.pickerStyle(SegmentedPickerStyle())
                .padding(5)
            //MyTaskListView()
            List (selection: $selection) {
                ForEach(viewModel.mt){ t in
                    //TaskCell(t : task)
                    Text("Title")
                }
                .onDelete(perform: viewModel.delete)
            }
        }.onAppear{
            self.viewModel.requestMYTasks()
        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
        
    }
    
    init() {
        UISegmentedControl.appearance().selectedSegmentTintColor = Colors.navBarColor
        UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
        UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: Colors.navBarColor], for: .normal)
    }
    
    
}

也保持简单的行后,编辑不起作用

EditButton自动跟踪编辑模式,因此只需删除显式 state 和所有工作(在复制代码上,Xcode 11.4)

//@State var editMode = EditMode.active         // remove this

List (selection: $selection) {
                ForEach(viewModel.myTasks){ task in
                    TaskCell(task : task)
                }
                .onDelete(perform: viewModel.delete)
//                .environment(\.editMode, self.$editMode)    // ... and this
            }
.navigationBarItems(trailing: EditButton())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM