我对带有TupleView的ViewBuilders有这样的初始化
// MARK: TupleView support
public init<A: View, B: View>(@ViewBuilder content: () -> TupleView<(A, B)>) {
let views = content().value
self.childs = [AnyView(views.0), AnyView(views.1)]
}
代码运行良好,但从新的 Xcode 11.3 更新 (iOS 13.3( 开始,此代码停止工作,并且未执行带有 TupleView 的构造函数。
以下是我将 MenuView 与此类初始值设定项一起使用的方式:
菜单视图 {
DashboardView()
.withTag(0)
.tabBarItem {
TabItemView(imageName: "Dashboard", title: "Home")
},
ContactsView(companyId: self.getCompanyId())
.withTag(1)
.tabBarItem {
TabItemView(imageName: "Contacts", title: "Contacts")
}
}
但是现在它在这个@ViewBuilder不起作用,我认为不能正确调用ViewBuilder.buildBlock((,并且此参数被识别为调用
public init<Content: View>(@ViewBuilder content: () -> Content>) { }
我找到了解决方法,但它是非常丑陋的代码,例如,我们如何使用本机 TabView 还很遥远。
MenuView {
ViewBuilder.buildBlock(
DashboardView()
.withTag(0)
.tabBarItem {
TabItemView(imageName: "Dashboard", title: "Home")
},
ContactsView(companyId: self.getCompanyId())
.withTag(1)
.tabBarItem {
TabItemView(imageName: "Contacts", title: "Contacts")
}
)
}
当你使用菜单视图时,你必须添加一个TupleView
?
MenuView {
TupleView((
DashboardView()
.withTag(0)
.tabBarItem {
TabItemView(imageName: "Dashboard", title: "Home")
},
ContactsView(companyId: self.getCompanyId())
.withTag(1)
.tabBarItem {
TabItemView(imageName: "Contacts", title: "Contacts")
}))
}