无法从自定义框架渲染 SwiftUI 预览

ink*_*kyu 6 xcode ios swift swiftui

我正在尝试在自定义框架中编写 SwiftUI 视图。

这样做的原因是我想隐藏子视图的实现,因为 Swift 不提供命名空间。因此,我制作了一个子框架并在其中实现了一个测试视图。

所以我想做:

  1. 制作一个应用程序(名称:singleview)
  2. 制作一个子模块(名称:Framework,名为Calendar
  3. 导出视图(名称:单元格)
  4. 在两者中预览 (*)

我得到了:

  1. 构建并成功运行
  2. ContentView我可以看到应用程序的预览

但问题是:

  • 我看不到单元格的预览(框架内部 - Calendar),并出现错误: 图像1
'Cell_Previews' is not a member type of 'Calendar'

----------------------------------------

BuildError: Failed to build Cell.swift

Compiling failed: 'Cell_Previews' is not a member type of 'Calendar'

failedToBuildDylib: /Users/q/Library/Developer/Xcode/DerivedData/singleview-cmqdlfabgiintkgnvdpzzagojvzf/Build/Intermediates.noindex/Previews/singleview/Intermediates.noindex/Calendar.build/Debug-iphonesimulator/Calendar.build/Objects-normal/x86_64/Cell.2.preview-thunk.swift:22:36: error: 'Cell_Previews' is not a member type of 'Calendar'
typealias Cell_Previews = Calendar.Cell_Previews
                          ~~~~~~~~ ^
/Users/q/Library/Developer/Xcode/DerivedData/singleview-cmqdlfabgiintkgnvdpzzagojvzf/Build/Intermediates.noindex/Previews/singleview/Intermediates.noindex/Calendar.build/Debug-iphonesimulator/Calendar.build/Objects-normal/x86_64/Cell.2.preview-thunk.swift:6:6: error: replaced accessor for 'previews' could not be found
    @_dynamicReplacement(for: previews) private static var __preview__previews: some View {
     ^
/Users/q/Library/Developer/Xcode/DerivedData/singleview-cmqdlfabgiintkgnvdpzzagojvzf/Build/Intermediates.noindex/Previews/singleview/Intermediates.noindex/Calendar.build/Debug-iphonesimulator/Calendar.build/Objects-normal/x86_64/Cell.2.preview-thunk.swift:21:27: error: 'Cell' is not a member type of 'Calendar'
typealias Cell = Calendar.Cell
                 ~~~~~~~~ ^
/Users/q/Library/Developer/Xcode/DerivedData/singleview-cmqdlfabgiintkgnvdpzzagojvzf/Build/Intermediates.noindex/Previews/singleview/Intermediates.noindex/Calendar.build/Debug-iphonesimulator/Calendar.build/Objects-normal/x86_64/Cell.2.preview-thunk.swift:14:6: error: replaced accessor for 'body' could not be found
    @_dynamicReplacement(for: body) private var __preview__body: some View {
     ^

Run Code Online (Sandbox Code Playgroud)

那么,如果我想看预览,我该怎么办?

图像2 这是项目的截图

图像3 这是失败的截图

我正在使用 Xcode 11.2.1 (11B500)。

谢谢你!


编辑:谢谢克里斯!Cell.swift(框架内部)的代码是:


import SwiftUI

public struct Cell: View {
    public init() {}

    public var body: some View {
        Text("INTERNAL")
    }
}

public struct Cell_Previews: PreviewProvider {
    public init() {}

    public static var previews: some View {
        Cell()
    }
}

Run Code Online (Sandbox Code Playgroud)

ContentView.swift(框架的用户)是:

import SwiftUI
import Calendar

struct ContentView: View {
    var body: some View {
        Cell()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Run Code Online (Sandbox Code Playgroud)