在 SwiftUI 游乐场中使用多个文件

Posted

技术标签:

【中文标题】在 SwiftUI 游乐场中使用多个文件【英文标题】:Using multiple files in SwiftUI playground 【发布时间】:2021-06-14 10:05:30 【问题描述】:

我正在尝试。我在源代码的单独文件中添加了一些代码。我只想在点击按钮时显示工作表视图。即使我已经公开了结构,但我仍然收到错误,因为“SecondView 初始化程序由于内部保护级别而无法访问”

代码如下:


struct ContentView: View 
    @State private var showingScene = false
    var body: some View 
        Button(action: 
            self.showingScene.toggle()
        , label: 
            Text("Button")
        )
        .sheet(isPresented: $showingScene, content: 
           SecondView()  
        )
    


//The code in source file

import SwiftUI

public struct SecondView: View

    public var body: some View 

    Text("Second View")       

    


【问题讨论】:

【参考方案1】:

默认初始化程序(由编译器生成的初始化程序,因为您没有显式声明)实际上是internal

这是记录在here:

默认初始化器与它初始化的类型具有相同的访问级别,除非该类型被定义为公共。对于定义为公共的类型,默认初始化程序被认为是内部的。如果您希望公共类型在另一个模块中使用时可以使用无参数初始化程序进行初始化,则您必须自己显式提供一个公共无参数初始化程序作为类型定义的一部分。

所以你应该这样做:

public struct SecondView: View

    public init()   // here!
    
    public var body: some View 

        Text("Second View")

    

【讨论】:

以上是关于在 SwiftUI 游乐场中使用多个文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 11 游乐场中使用 SwiftUI

如何制作多页 Swift Playground

Manifest.plist 文件 ipad swift 游乐场

Swift:SwiftUI 视图的多个条件的内联评估

是否可以在 iPad Swift 游乐场应用程序中保存显示在文件应用程序中的文件

如何围绕多个轴旋转 SCNNode?