Инициализатор TupleView в SwiftUI и iOS 13.3 перестает работать. что с этим происходит?

У меня есть такие объекты с ViewBuilders с TupleView

 // 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 с таким инициализатором:

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")
            }
  )
}

1 ответ

Когда вы используете 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")
        }))

    }
Другие вопросы по тегам