我正在try 用一些可选的Views
构建一个定制的NavBar
,比如一个搜索栏(但仅当视图需要显示它时).
基本上,我需要传递大约@State
个带有@Binding
个向下视图的属性.但我也需要它们是Optional
个参数.
下面是一个例子:
struct NavBar: View {
var isSearchable: Bool?
@Binding var searchTxt: String
@Binding var searchIsOn: Bool
var navBarTitle: String
var navBarAction: (() -> Void)?
var navBarImage: String?
init(navBarTitle: String, navBarAction: (() -> Void)? = nil, navBarImage: String? = nil, isSearchable: Bool? = false, searchTxt: (Binding<String>)?, searchIsOn : (Binding<Bool>)?) {
self.navBarTitle = navBarTitle
if(navBarAction != nil) {
self.navBarAction = navBarAction!
}
if(navBarImage != nil) {
self.navBarImage = navBarImage!
}
self.isSearchable = isSearchable
self._searchTxt = (searchTxt != nil) ? (searchTxt!).binding : nil
self._searchIsOn = (searchIsOn != nil) ? (searchIsOn!).binding : nil
assert((navBarAction != nil) ? navBarImage != nil : true)
assert((isSearchable! == true) ? (searchTxt!.value.count > 0) : true)
}
// var body ....
}
我说的属性是searchIsOn
和searchTxt
.
无法分配"Binding"类型的值键入"Binding"
你知道我如何解决这个问题吗?
还是有更好的方法来做我想做的事?