我有一个带有两个 tabItems 的 TabView(都是 NavigationViews)。我想在每个选项卡上都有一个 navigationBarItem,它将在 TabView 顶部推送一个工作表。然而,每当我呈现该工作表时,它似乎将我的选择设置为 0。
import SwiftUI
struct SheetTest: View {
@State var selection = 0
@State var showSheet = false
var body: some View {
TabView(selection: $selection) {
NavigationView {
Text("Tab 1")
.navigationBarItems(trailing: button)
}.navigationViewStyle(StackNavigationViewStyle())
.tabItem({
Image(systemName: "1.circle")
Text("Tab 1")
})
NavigationView {
Text("Tab 2")
.navigationBarItems(trailing: button)
}.navigationViewStyle(StackNavigationViewStyle())
.tabItem({
Image(systemName: "2.circle")
Text("Tab 2")
})
}
.sheet(isPresented: $showSheet) {
Text("Sheet")
}
}
var button: some View {
return Button(action: {
showSheet = true
}, label: {
Text("button")
})
}
}
struct SheetTest_Previews: PreviewProvider {
static var previews: some View {
SheetTest()
}
}
Run Code Online (Sandbox Code Playgroud)
您需要为每个项目添加标签:
/* ... */
.tabItem({
Image(systemName: "1.circle")
Text("Tab 1")
})
.tag(0) // <-- Here
Run Code Online (Sandbox Code Playgroud)
和:
/* ... */
.tabItem({
Image(systemName: "2.circle")
Text("Tab 2")
})
.tag(1) // <-- And here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
873 次 |
| 最近记录: |