我考虑了SwiftUI中TabView的实现方式。
据我所见,它仅需要将内容作为@ViewBuilder传递给初始化器。
public init(selection: Binding<SelectionValue>?, @ViewBuilder content: () -> Content)
我希望能实现自己的自定义MyTabView,其使用方式类似于本地TabView。但是考虑到如何将多个视图(屏幕)传递到@ViewBuilder中,并基于此参数,即返回Content的闭包条件性地显示它们!根据选择参数。
是否有一些私有实现或有可能以某种方式实现这一点。原始的TabView有许多限制,我想规避这些限制。但同时,我想坚持使用本地实现。
我希望采用类似以下的方法:
MyTabView(selection: $selection, tabs: {
Tab1()
Tab2()
Tab3()
}) {
View1()
View2()
View3()
}
当然,最好的情况是有像这样的东西。
MyTabView(selection: $selection}) {
View1().tabItem({})
View2().tabItem()
View3().tabItem()
}
但是最后一个选项似乎更难实现。