:-) 这里有一个可能很愚蠢的问题,有点序言抱歉!
长话短说 - 由于 SwiftUI 中的 TabView 存在错误,我一直在开发一个应用程序。我用 ZLayer 覆盖选项卡以在中间添加一个时髦的大按钮 - 所以当我遇到问题时,我认为这将是问题......但这很快就变得无关紧要了。
为简单起见,我在 XCode v11.6 中启动了一个新项目,构建目标 iOS 13.6,Selected Tabbed App,创建了一个非常简单的带有 2 个选项卡的样板 SwiftUI 内容视图。(为了清楚起见 - 我根本没有修改默认代码)。在模拟器上完美运行。插入运行 iOS 13.6.1 的 iPhone XS(当我第一次遇到这个问题时,我是在 13.5 上,所以在出现这个问题时更新了 iOS 版本)。在我的手机上运行简单的、未经修改的应用程序。加载“第一个视图”,我点击“第二个”选项卡,什么都没有。完全没有反应。这与我在更复杂的应用程序中遇到的问题相同。偶尔,如果我继续重建。它会让我切换到“第二视图”,但随后无法切换回来。选项卡控制器似乎变得无响应。
现在回到我更复杂的应用程序,在第一个视图上有一个滚动视图,并且有一个带有附加 actionSheet 的按钮。如果我弹出打开操作表,然后将其关闭(无论只是调用 .cancel() 按钮还是选择一个操作),选项卡控制器都会完美运行。还有另一个选项可以打开另一个工作表,一旦覆盖了某些内容,一切都会按预期工作,直到下一次应用程序启动。
尝试重置我的 MacBook,尝试重置我的 iPhone,尝试卸载构建然后重新构建,清理构建文件夹,尝试使用构建目标 iOS 13、13.2、13.5、13.6 创建多个项目。问题似乎仍然存在,但每次模拟器都能完美运行。
所以我的问题是:从我的搜索中我找不到有这个问题的人。真的只有我吗?任何拥有 XCode 11.6 和 iPhone XS 的人都可以点击“New Project”->“Tabbed App”并让我知道这是否有效?(我几乎想知道当您创建应用程序时 XCode 11.6 中是否存在错误,并且每个人都在从事已经在 XCode 11.6 之前创建的项目或已经使用 beta XCode 的项目......但实际上我只是没有想法)还有没有更深层次的调试可以做?诸如实际通知我它收到的每一次触摸以及应用沙盒是否正在获得触摸或操作系统(出于某种原因)是否保持点击手势之类的东西?我从来没有经历过这样的事情,所以我真的不知道从哪里开始调试,因为我不知道 甚至不知道应用程序是否正在接收点击。或者坦率地说 - 有没有人有任何其他想法?
只是为了清楚起见 - ContentView 看起来像这样:(同样它直接来自 XCode 为选项卡式应用程序创建的内容)
import SwiftUI
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
Text("First View")
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
Image("second")
Text("Second")
}
}
.tag(1)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在此先感谢并为漫长的漫谈道歉 - 来自一个非常昏昏欲睡的开发者!