视图初始化上的SwiftUI可选绑定参数

视图初始化上的SwiftUI可选绑定参数,swiftui,Swiftui,我有一个视图,它有时用于浏览数据,有时用于选择数据 用于浏览时,它由NavigationLink显示 当用于选择数据时,它显示为一个模式表,并通过将binding boolean isPresented设置为false来关闭,因此我可以使用sheet函数onDismiss 然而,在浏览模式下,我需要一种跳过初始化isPresented绑定布尔值的方法。 正确的方法是在view init()上使用可选参数,但我尝试的所有操作都会抛出一个错误 这就是我称之为浏览数据的方式: NavigationLi

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

用于浏览时,它由NavigationLink显示

当用于选择数据时,它显示为一个模式表,并通过将binding boolean isPresented设置为false来关闭,因此我可以使用sheet函数onDismiss

然而,在浏览模式下,我需要一种跳过初始化isPresented绑定布尔值的方法。 正确的方法是在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)
    }
...
}
struct BrowseOrSelectView:视图{
@状态变量selMode:SelModes
@显示绑定变量:Bool
public init(selMode:SelModes,isPresented:(Binding)?=true){
UITableView.appearance().separatorStyle=.none
_selMode=状态(初始值:selMode)
}
...
}
引发的错误是:


无法将“Bool”类型的值转换为预期的参数类型绑定Bool。请使用常量绑定,如

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

asnswer Asperi真棒,它很管用!。我还应该附加一个带有绑定对象的参数来跟踪可选的选定值,并且该参数也应该是可选的,因为在浏览模式下它不会被使用。对于selectedValue:(Binding)这样的参数,您会使用什么作为默认值?