为啥这段代码在运行时会崩溃?它只是选项卡式视图中 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 中不会?

更改选项卡式视图栏颜色 SwiftUI

Swift 4 相机视图,为啥这会在 iPad 而不是 iPhone 上崩溃?

更改选项卡式视图 SwiftUI 的凹槽区域背景颜色

带有多个表视图的选项卡式 ios 应用程序