ios SwiftUI -列表滑动操作卡住

ykejflvf  于 2023-01-14  发布在  iOS
关注(0)|答案(1)|浏览(182)

我正在使用SwiftUI(iOS 15)实现一个自定义底部表单。如果我隐藏并重新打开滑动按钮可见的列表,列表将停止响应手势。

struct ListView: View {
    var body: some View {
        List {
            Section {
                Text("1").swipeActions { Button(action: {}) { Text("Do!") } }
            }
        }
    }
}

struct ContentView: View {
    @State var showList: Bool = false

    var body: some View {
        VStack {
            Toggle("Show", isOn: $showList).toggleStyle(.button)
            if self.showList {
                ListView()
            }
        }
    }
}

我试了几样东西:
选项1:标准SwiftUI工作表工作正常,但我不能使用它,因为我需要控制工作表的高度。

var body: some View {
    VStack {
        Toggle("Show", isOn: $showList).toggleStyle(.button)
        .sheet(isPresented: $showList, content: {
            Toggle("Close", isOn: $showList).toggleStyle(.button)
            ListView()
        })
    }
}

选项2:我可以通过在顶部放置一个空白视图来解决这个问题,但是当我再次显示列表时,滑动操作仍然在进行,所以这并不理想。

var body: some View {
    VStack {
        Toggle("Show", isOn: $showList).toggleStyle(.button)
        ZStack {
            ListView()
            if !self.showList {
                Text("")
                    .frame(maxWidth: .infinity, maxHeight: .infinity)
                    .background(Color(UIColor.systemBackground))
            }
        }
    }
}

你知道该怎么做吗?

uyto3xhc

uyto3xhc1#

终于解决了,将List嵌入NavigationView就解决了这个问题。

var body: some View {
    NavigationView {
        List {
            Section {
                Text("1")
                    .swipeActions {
                        Button(action: {}) { Text("Do!") }
                    }
            }
        }
    }
    .navigationViewStyle(.stack)
}

相关问题