为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器
Posted
技术标签:
【中文标题】为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器【英文标题】:Why does this code crash at runtime? It is just a picker in a SwiftUI in a tabbed view为什么这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器 【发布时间】:2019-07-23 17:08:49 【问题描述】:在 SwiftUI 中只是一个简单的选项卡式应用程序 xcodeproj。
添加这样的选择器 aaand: 在运行时切换到第二个选项卡时崩溃。
import SwiftUI
struct ContentView : View
@State private var selection = 0
@State private var pickerselection = 3
let numbers = ["1", "2", "3", "4", "5"]
var aTitle: String = "Title"
var body: some View
TabbedView(selection: $selection)
// ADD ONLY THIS PART TO A NEW TABBED APP SWIFTUI PROJECT //// BEGIN /////
VStack
Text("First View")
.font(.title)
Picker(selection: $pickerselection, label:
Text(aTitle))
ForEach(0 ..< numbers.count) index in
Text(self.numbers[index]).tag(index)
////// XCODE 11.0 BETA 2 ONLY//////// END ////////////
.tabItemLabel(Image("first"))
.tag(0)
Text("Second View")
.font(.title)
.tabItemLabel(Image("second"))
.tag(1)
#if DEBUG
struct ContentView_Previews : PreviewProvider
static var previews: some View
ContentView()
#endif
编译,但切换标签时运行时崩溃:
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x8)
【问题讨论】:
欢迎来到 Stack Overflow!很难理解您的代码,因为它没有正确缩进。如果你修复它,它会更容易帮助你。例如,VStack
之后的Text("First View")
应进一步缩进,VStack
的右大括号应与VStack
对齐。如果您选择整个文件并选择 Editor > Structure > Re-Indent,Xcode 可以为您修复缩进。
“编译”。不,它没有(反正不在我的机器上)。
很多时候xcode控制台会有关于崩溃的非常好的线索。根据您设置断点的方式,您需要在控制台为您提供所需消息之前点击“继续程序执行”按钮。尝试一下,然后在此处复制控制台文本。
这次没有控制台输出,也没有错误转储。很奇怪。
【参考方案1】:
XCode 11 beta 5 中的问题似乎已解决。
【讨论】:
以上是关于为啥这段代码在运行时会崩溃?它只是选项卡式视图中 SwiftUI 中的选择器的主要内容,如果未能解决你的问题,请参考以下文章
我有一个选项卡式视图,如何触发视图运行一些代码,视图由选项卡式视图激活?
为啥这段代码在 iOS 5.1 中会崩溃,而在 iOS 6 中不会?