SwiftUI MacOS项目alert弹出两次问题解决

问题

使用Alert时,将其用在list的循环视图元素中,弹出Alert时,一定时长不选择就会在点击后弹出第二次。

这里提一下就是之前在网上看到一个帖子说他将Alert放在NavigationView上也会出现该问题。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
        VStask {
            ForEach(items, id: \.self) { item in
                ElementView(item: item) // 循环中的元素
                    .alert(isPresented: $showAlert) {
                        Alert(
                            title: Text("删除确认"),
                            message: Text("请问您确认删除该数据吗?"),
                            primaryButton: .default(
                                Text("取消"),
                                action: {
                                    showAlert = false
                                }
                            ),
                            secondaryButton: .destructive(
                                Text("删除"),
                                action: {
                                    deleteItems(offsets: [index])
                                })
                        )
                    }
            }
        }

解决

Alert放到循环之前的元素上,比如VStackList

参考

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy