在 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 游乐场中使用多个文件的主要内容,如果未能解决你的问题,请参考以下文章
Manifest.plist 文件 ipad swift 游乐场