在 SwiftUI 中,如何将选项卡放在视图顶部的 TabbedView 中?
In SwiftUI how do I put the tabs in a TabbedView at the top of the view?
我有一个底部有选项卡的视图,其中一个 views
有 subviews
,为了从视觉上分离逻辑,我将子视图的选项卡放在视图的顶部以下代码完美运行:
self.tabbar.frame = CGRect( x: 0,
y: view.safeAreaInsets.top,
width: self.view.frame.size.width,
height: 50)
如何在 SwiftUI
中执行此操作?
为此,您可以将选项卡视图创建为单个选项卡的容器,如下所示...
struct TabbedView: View {
@State private var selectedTab: Int = 0
var body: some View {
VStack {
Picker("", selection: $selectedTab) {
Text("First").tag(0)
Text("Second").tag(1)
Text("Third").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
switch(selectedTab) {
case 0: FirstTabView()
case 1: SecondTabView()
case 2: ThirdTabView()
}
}
}
}
这样做,您将根据分段控件的值有条件地填充“选项卡页”。
通过使用 @State
和 $selectedTab
分段控件将更新 selectedTab 值,然后 re-render 视图将根据 [=13= 的新值替换页面].
编辑
开关现在可以在 SwiftUI 测试版中使用。
我有一个底部有选项卡的视图,其中一个 views
有 subviews
,为了从视觉上分离逻辑,我将子视图的选项卡放在视图的顶部以下代码完美运行:
self.tabbar.frame = CGRect( x: 0,
y: view.safeAreaInsets.top,
width: self.view.frame.size.width,
height: 50)
如何在 SwiftUI
中执行此操作?
为此,您可以将选项卡视图创建为单个选项卡的容器,如下所示...
struct TabbedView: View {
@State private var selectedTab: Int = 0
var body: some View {
VStack {
Picker("", selection: $selectedTab) {
Text("First").tag(0)
Text("Second").tag(1)
Text("Third").tag(2)
}
.pickerStyle(SegmentedPickerStyle())
switch(selectedTab) {
case 0: FirstTabView()
case 1: SecondTabView()
case 2: ThirdTabView()
}
}
}
}
这样做,您将根据分段控件的值有条件地填充“选项卡页”。
通过使用 @State
和 $selectedTab
分段控件将更新 selectedTab 值,然后 re-render 视图将根据 [=13= 的新值替换页面].
编辑
开关现在可以在 SwiftUI 测试版中使用。