SwiftUI 和 iOS 13.3 TupleView 初始值设定项停止工作。会怎样呢?



我对带有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")
}))
}

最新更新