当前位置: 首页 > 知识库问答 >
问题:

View init上的SwiftUI可选绑定参数

曹育
2023-03-14

我有一个视图,有时用于浏览数据,有时用于选择数据。

当用于浏览时,它由NavigationLink呈现。

当用于选择数据时,它以模式表的形式显示,并通过将绑定布尔值isPresented设置为false来关闭,因此我可以使用表函数onDismiss。

然而,在浏览模式下,我需要一种方法来跳过初始化isPresent绑定布尔值。正确的方法是view init()上的可选参数,但我尝试的所有内容都会抛出错误。

这就是我称之为浏览数据的方式:

NavigationLink(destination:BrowseOrSelectView(selMode:SelModes.browse)) {
Text("Browse")
}

这就是我称之为选择数据的方式:

.Sheet(isPresented: self.$isPresented, onDismiss:{...}) {
    BrowseOrSelectView(selMode: SelModes.selection, isPresented: self.$isPresented)
}

这是观点:

struct BrowseOrSelectView: View {
    @State var selMode:SelModes
    @Binding var isPresented:Bool

    public init(selMode: SelModes, isPresented:(Binding<Bool>)? = true) {
        UITableView.appearance().separatorStyle = .none
        _selMode = State(initialValue: selMode)
    }
...
}

引发的错误是:

无法将类型“Bool”的值转换为预期的参数类型 Binding Bool

共有1个答案

党浩阔
2023-03-14

使用常量绑定,如

public init(selMode: String, isPresented:(Binding<Bool>) = .constant(true)) {
    UITableView.appearance().separatorStyle = .none
    _selMode = State(initialValue: selMode)
    _isPresented = isPresented
}
 类似资料:
  • 这是我的可选装订 所以现在当我尝试调用这个构造函数时: 我得到了这个错误: 绑定

  • 我正在尝试构建一个自定义的< code>NavBar,带有一些可选的< code >视图,比如searchbar(但前提是视图需要显示它)。 基本上,我需要在视图中传递一些带有参数。 下面是一个示例: 我所说的属性是和。但是执行 或 会引发编译错误: 无法将类型“绑定?”的值分配给类型“绑定” 你知道我该如何解决这个问题吗? 还是有更好的方法来做我想做的事?

  • 如何拥有绑定类型的可选参数

  • (macOS 10.15 beta 和 Xcode 11 beta 5) 我正在使用的SwiftUI教程(https://www.raywenderlich.com/3715234-swiftui-getting-started#toc-anchor-005)包括以下视图: 该视图是在与另一个视图相同的文件中声明的,可以作为该视图的组件进行预览。 正如在教程中使用的那样,它可以工作,但我后来将视图

  • 问题内容: 最初使我不愿在代码中加入太多可选绑定的一件事是添加了更多的变量名。例如,我通常会写: 因为替代方案似乎有些混乱: 那是很多香蕉。我见过人们使用诸如新变量名之类的东西(在较大的代码块中可能很难看懂),但是我想知道是否存在一种普遍认可的变量名样式标准可以与可选绑定?谢谢阅读。 问题答案: 只需使用相同的名称: 不要使用匈牙利符号-如果您使用的是未包装的可选内容,则编译器会抱怨。

  • 参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。 参数绑定传入的值会经过全局过滤,如果你有额外的过滤需求可以在操作方法中单独处理。 按名称绑定 参数绑定方式默认是按照变量名进行绑定,例如,我们给Blog控制器定义了两个操作方法read和archive方法,由于read操作需要指定一个id参数,archive方法需要指定年份(year)和月份(mon