![](/img/trans.png)
[英]Multiple action handlers of Buttons gets fired, only when the parent VStack is inside a List in SwiftUI
[英]SwiftUI - List swipe action gets stuck
我正在使用 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))
}
}
}
}
任何想法在這里做什么?
終於想通了。 將 List 嵌入 NavigationView 可以解決這個問題。
var body: some View {
NavigationView {
List {
Section {
Text("1")
.swipeActions {
Button(action: {}) { Text("Do!") }
}
}
}
}
.navigationViewStyle(.stack)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.