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

如何使用非布尔值调用SwiftUI的.fullScreenCover(isPresented:)方法

解决SwiftUI fullScreenCover绑定User?类型不匹配问题

你可以通过自定义Binding将User?的状态转换为Bool类型,无需新增额外的布尔变量,只维护user这一处状态:

直接修改视图中的fullScreenCover修饰符:

.fullScreenCover(isPresented: Binding(
    get: { viewModel.user != nil },
    set: { if !$0 { viewModel.user = nil } }
)) {
    // 这里放全屏覆盖的视图内容
}

原理说明

  • get闭包:判断user是否存在,返回Bool值决定是否显示全屏视图
  • set闭包:当全屏视图被关闭时(系统会传入false),将user设为nil,保持状态一致性

这样登录成功后设置viewModel.user = 你的User实例,全屏视图会自动弹出;关闭视图时user会被置空,全程只需要维护user这一个状态,完全避免了冗余变量的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:19:57