【问题标题】:SwiftUI list multiple custom row edit optionSwiftUI 列出多个自定义行编辑选项
【发布时间】:2020-06-25 06:14:56
【问题描述】:

我需要 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)
    }
    
    
}

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

【问题讨论】:

    标签: ios swiftui swiftui-list


    【解决方案1】:

    EditButton 自动跟踪编辑模式,因此只需删除您的显式状态和所有工作(在复制代码上,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())
    

    【讨论】:

    • @Prathap,您提供了所有代码吗?你使用哪个 Xcode/env?正如答案中所述,它是品尝和工作的。
    • 我只有一个带有标签栏的屏幕和带有该列表的分段控件,仍然可以正常工作,仅此列表有问题,我已将简单的 Text("title") 替换为该自定义行,即使我有同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多