虽然之前已经问过工作表重置 TabView 的问题,但我似乎遇到了一个与我们有超过 5 个选项卡的设置有关的问题。
我在使用 6 页 TabView 布局时遇到问题,并且在第 6 页上启动了 .sheet。当我启动应用程序并浏览选项卡到第 6 页时,穿过“附加“更多”页面,然后在选项卡 6 上启动工作表我被重置到选项卡 4。有任何提示我做错了什么吗?选项卡标记正确,$selection 似乎也是正确的,这是其他帖子的提示。
示例代码在这里:
import SwiftUI
struct ContentView: View {
@State var selection = 0
var body: some View {
TabView(selection: $selection){
Text("page 1")
.tabItem { Text("page 1") }.tag(0)
Text("page 2")
.tabItem { Text("page 2") }.tag(1)
Text("page 3")
.tabItem { Text("page 3") }.tag(2)
Text("page 4")
.tabItem { Text("page 4") }.tag(3)
Text("page 5")
.tabItem { Text("page 5") }.tag(4)
MyPage6()
.tabItem { Text("page 6") }.tag(5)
}
}
}
#Preview {
ContentView()
}
struct MyPage6: View {
@State var showSheet = false
var body: some View {
VStack{
Text("page 6")
Button("Show sheet") {
showSheet.toggle()
}
}
.sheet(isPresented: $showSheet){
Text("this is my sheet on page 6.")
}
}
}
这看起来确实有问题。在 iPhone 15 Pro 模拟器和真实设备(iPhone 14 Pro Max)上运行,选项卡 5 和标签 6 都显示在自动生成的“更多”选项卡上。当我第一次点击它时,选择第 6 页并激活该工作表,选项卡视图返回到 最后使用的非“更多” 选项卡。我猜如果您先按顺序尝试了所有选项,您就会看到选项卡 4。
“更多”选项卡保留了所显示页面的记忆 - 因此,如果我单击返回,我会看到第 6 页,而不是第 5 页和第 6 页的列表。在该视图中激活工作表,然后将第 6 页保留在后台。
您应该使用反馈助手应用程序或https://feedbackassistant.apple.com/向Apple报告此情况。
同时,我还建议考虑一下 Apple 的指南对溢出选项卡的使用有何规定:
尽可能避免溢出选项卡。根据设备尺寸和方向,可见选项卡的数量可能小于选项卡总数。如果水平空间限制了可见选项卡的数量,则尾随选项卡将变为“更多”选项卡,在单独的屏幕上显示列表中的剩余项目。 “更多”选项卡使人们更难访问和注意到隐藏选项卡上的内容,因此请尝试限制应用程序中可能发生这种情况的场景。