Xcode报错:Reference to generic type ‘FocusState’ requires arguments in
Xcode报错:Reference to generic type ‘FocusState’ requires arguments in <...>

Xcode报错:Reference to generic type ‘FocusState’ requires arguments in <...>

父视图创建 @FocusState 控制文本输入框的聚焦状态:

struct HomeActivitySheetView: View {
    @FocusState private var isFocused: Bool

在子视图中使用Binding传递FocusState时,发生报错:

报错信息

Reference to generic type 'FocusState' requires arguments in <...>

报错原因:FocusState是一个泛型,不能作为 @Binding使用。  

FocusState<Bool>

在父视图中,声明的是Bool类型:

@FocusState private var isFocused: Bool

这表示 isFocused的实际类型为:

FocusState<Bool>.Binding

这意味着需要传递的是FocusState<Bool>.Binding,而不是整个 FocusState。

在子视图中,使用 @Binding 传递参数时:

@Binding var isFocused: FocusState

Swift会认为FocusState缺少泛型,因此报错。

解决方案

子视图应该使用 @FocusState.Binding 绑定父视图的 @FocusState:

// 子视图
struct HomeActivitySheetBackground: View {
    @FocusState.Binding var isFocused: Bool
}
   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注