SwiftUI -列表滑动操作卡住



我正在使用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))
}
}
}
}

有什么主意吗?

终于想通了。在NavigationView中嵌入List可以解决这个问题。

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

最新更新