SwiftUI中Sheet内ConfirmationDialog点击按钮后重复弹窗问题求助
Sheet内ConfirmationDialog点击按钮异常闪烁的解决办法
你遇到的问题是在Sheet中使用ConfirmationDialog时,点击对话框按钮会出现弹窗先关闭、短暂重新打开再关闭的异常闪烁现象。
问题原因
这是因为你把confirmationDialog修饰符附加在了List上,而List嵌套在NavigationStack内部。当对话框按钮被点击触发视图刷新时,绑定的dialogShow状态会出现异常的重复触发,导致弹窗反复显示关闭。
解决方法
将confirmationDialog修饰符移到Sheet的根视图(也就是外层的NavigationStack)上,让它脱离内部列表的刷新周期,避免状态被意外重置。
修改后的完整代码:
import SwiftUI struct ContentView: View { @State private var sheetShow = false @State private var dialogShow = false var body: some View { NavigationStack { List { Button("Open sheet") { sheetShow = true } } .navigationTitle("Test") .sheet(isPresented: $sheetShow) { NavigationStack { List { Button("Open dialog") { dialogShow = true } } .navigationTitle("Test") } // 将对话框修饰符移到sheet根视图外侧 .confirmationDialog("Title", isPresented: $dialogShow) { Button("Button 1") { // 执行操作 } Button("Button 2", role: .destructive) { // 执行操作 } } } } } }
内容的提问来源于stack exchange,提问作者Sebastijan B.
相关产品推荐
相关产品推荐

