我正在 Storyboard/Swift (XCode 14.2) 中编写一个应用程序。当我在 iPhone (14 pro 16.3.1) 或 iPhone 模拟器 (16.2) 上运行该应用程序时,不会出现错误。但是当我在 iPad 模拟器中测试我的应用程序时(尝试了专业版、空气版和普通版):
[API]创建0x88镜像槽失败(alpha=1 Wide=0)(client=0x29bd01dc)[0x5(os/kern)失败]
我使用 UICollectionView 作为菜单,当我按下相应的图块/按钮时,错误会打印在调试区域中。该应用程序没有中断,看起来工作正常。
我尝试用 Google 搜索该问题并搜索 StackOverflow,但它没有给我足够的线索来告诉我该怎么做。 Google/Stack 几乎没有结果。
我对 Swift 还很陌生。我使用单一尺寸的应用程序图标(1024pt),而不是所有那些经过调整的图标。每个图像均以通用模式、1x、2x 和 3x 给出。 (使用 Asset Catalog Creator Pro 制作)
有人能指出我的错误吗?
使用 NavigationStack 时,我在 SwiftUI 中收到相同的消息错误,并且仅在 iPad 上收到此消息。就我而言,当我为主导航视图设置标题时,会出现错误。我尝试了下面的代码:
struct ContentView: View {
var body: some View {
NavigationStack {
VStack {
Text("Main View")
NavigationLink(destination: secondView()) {
Text("Go to the Second View")
}
}
.navigationTitle("Title 1") // <- This causes the error on iPad!
.navigationBarTitleDisplayMode(.inline)
}
}
}
struct secondView: View {
var body: some View {
Text("Second View")
.navigationTitle("Title 2")
}
}
当我从 ContentView 中删除 navigationTitle 时,一切工作正常!我不知道这是一个错误还是我遗漏了一些东西。我尝试使用 navigationBarTitle 而不是 navigationTitle 但出现了相同的错误消息!但作为我的情况的解决方法,将标题设置为主视图,我这样做了:
struct ContentView: View {
var body: some View {
NavigationStack {
VStack {
HStack {
Text("Title 1")
.padding()
}
VStack {
Text("Main View")
NavigationLink(destination: secondView()) {
Text("Go to the Second View")
}
}
.frame(maxWidth: .infinity,maxHeight: .infinity)
}
}
}
}
struct secondView: View {
var body: some View {
Text("Second View")
.navigationTitle("Title 2")
}
}
虽然 Op 使用 Storyboard,但我在 NavigationStack 中遇到了相同的运行时错误。我写下了出现此错误的原因,因此无论谁遇到此错误都可以从我的原因中获得帮助;
我在开头放置了一个新视图,然后忘记从旧的第一个视图中删除NavigationStack(在我的例子中,它是一个显示Tabview的视图)。因此,一个导航堆栈位于另一个导航堆栈中就是问题所在。
我希望这对其他人有帮助。我刚刚花了几个小时才找到原因。
以我个人的经验来看,Swift 编译器并不是一个成熟的编译器,无法在 SwiftIU 上提供有用的原因。