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

我正在尝试在 SwiftUI 游乐场中使用多个文件。我在源代码的单独文件中添加了一些代码。我只想在点击按钮时显示工作表视图。即使我已经公开了结构,但我仍然收到错误,因为“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")       

    }
}

【问题讨论】:

    标签: swift swiftui swift-playground swift-structs


    【解决方案1】:

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

    这是记录在here

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

    所以你应该这样做:

    public struct SecondView: View{
    
        public init() { } // here!
        
        public var body: some View {
    
            Text("Second View")
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多