You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中关闭Action Sheet时视图是否会被重建?

问题解答

这不是视图重新创建导致的,而是SwiftUI的actionSheet(isPresented:)修饰符内置的自动状态同步机制在起作用。

具体说明:

  • 当你通过isPresented参数绑定一个布尔值来控制ActionSheet的显示/隐藏时,SwiftUI会负责维护这个绑定值和UI状态的一致性。
  • 无论用户以何种方式关闭ActionSheet——包括点击取消按钮、点击ActionSheet外部区域、使用系统返回操作等——SwiftUI都会自动将绑定的布尔值设置为false,以此确保状态变量和实际UI展示保持同步。
  • 这种行为是SwiftUI框架内部的设计逻辑,和视图是否被销毁重建没有关系。你可以通过给showLogoutOptions添加didSet观察器来验证:
    @State private var showLogoutOptions = false {
        didSet {
            print("showLogoutOptions changed to: \(showLogoutOptions)")
        }
    }
    
    关闭ActionSheet时会打印出showLogoutOptions changed to: false,但视图的初始化方法不会被再次调用,说明视图并没有被重建。

结合你的代码来看:

你通过$showLogoutOptions绑定控制ActionSheet的显示,不管用户点击“Sign Out”还是“Cancel”按钮,SwiftUI都会自动把showLogoutOptions置为false,不需要你手动在按钮的action里修改这个状态值。

内容的提问来源于stack exchange,提问作者Gabriel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 15:13:26