hunter-ji / Blog

My Blog.
121 stars 38 forks source link

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

Open hunter-ji opened 3 years ago

hunter-ji commented 3 years ago

问题

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

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

        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

参考