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

SwiftUI预览中如何为@FocusState设置常量值?

解决SwiftUI子视图预览中@FocusState.Binding无法设置常量的问题

你遇到的问题根源在于@FocusState.Binding并非普通Binding类型,它没有constant这个静态成员。要在预览中给ScoreView传入合法的FocusState.Binding,可以用以下两种实用方法:

方法一:用临时视图容器包裹

在预览里创建一个带@FocusState变量的临时视图,通过它的绑定传递给子视图,完全模拟真实场景的使用逻辑:

struct ScoreView_Previews: PreviewProvider {
    struct PreviewContainer: View {
        @FocusState private var isFocused: Bool = false // 可自定义初始焦点状态
        
        var body: some View {
            ScoreView(focussed: $isFocused)
        }
    }
    
    static var previews: some View {
        PreviewContainer()
    }
}

方法二:直接构造FocusState.Binding实例

如果不想额外写容器视图,也可以通过FocusState.Binding的初始化方法创建实例,用闭包模拟绑定的读写行为:

struct ScoreView_Previews: PreviewProvider {
    static var previews: some View {
        ScoreView(focussed: FocusState.Binding(
            get: { false }, // 预览时的初始焦点状态
            set: { _ in }   // 预览场景可忽略设置逻辑
        ))
    }
}

两种方法都能让预览正常运行,第一种更贴近真实业务场景,第二种则更简洁适合快速调试预览。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:10:46