Swift UI View init上的可选绑定参数

时间:2020-05-09 17:51:30

标签: swiftui

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

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

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

但是,在浏览模式下,我需要一种跳过初始化isPresented绑定布尔值的方法。 正确的方法是在视图init()上使用可选参数,但我尝试执行的所有操作都会引发错误。

这是我用来浏览数据的方式:

any

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

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

这是视图:

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

引发的错误是:

无法将“布尔”类型的值转换为预期参数类型“绑定布尔”

1 个答案:

答案 0 :(得分:4)

使用.constant绑定,例如

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