2

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

1 回答 1

0

当你使用 MenuView 时,你必须添加一个TupleView?

  MenuView {

         TupleView(( 
        DashboardView()
        .withTag(0)
        .tabBarItem {
            TabItemView(imageName: "Dashboard", title: "Home")          
        },


        ContactsView(companyId: self.getCompanyId())
        .withTag(1)
        .tabBarItem {
            TabItemView(imageName: "Contacts", title: "Contacts")
        }))

    }
于 2019-12-22T21:20:00.640 回答