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
相关产品推荐
相关产品推荐

