簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM