SwiftUI 和自定义框架

时间:2020-12-31 19:44:27

标签: swiftui frameworks

我正在尝试将用 Python 编写的游戏转换为在 iPad 上运行。 Python 游戏运行良好,但没有界面:它只是吐出数据并获取用户输入;表示层在浏览器中处理。

因此,我构建了一个 iOS 框架,该框架具有多个反映 Python 结构的类。这工作正常。我还在 Swift 中将几个 Python 类更改为 Singletons,这简化了代码。所以一切都很好。

我还单独在 SwiftUI 中模拟了一个界面,这非常简单。它包含大约 30 个单独的字段(它们可以是标签,但这不是重点),它们实际上需要从框架中的变量中获取数据。

我已经成功地将框架导入到 SwiftUI 项目中,至少在我导入框架时没有抛出错误的情况下。

但是我找不到关于如何将游戏框架中的数据拉入界面的参考。直观地说,我希望通过导入的 Game 框架引用单例对象。例如,有一个名为 Board 的类,它包含一个 Place 类对象数组,其中一些包含 Tile 类对象。

我希望能够简单地引用 Game.Board.places[0].tile。但是我找不到信息,从 import Game 引用开始以实现此目的。因为它是由单例驱动的,所以没有要初始化的实例,当我自己编译和运行框架时,main.swift 会处理它。

我已将所有类和方法设置为 public,并将简单的属性设置为测试目标以从中提取数据,但我不知道该怎么做....对这些的任何引用都会导致 SwiftUI 项目导入的框架拒绝编译...

1 个答案:

答案 0 :(得分:0)

为了格式化工具,我会在这里尽我所能,Asperi...

main.swift, 本质化看起来像这样:

import Foundation


public var bleep: String = "xxx"

框架中的其他是类文件,大约是半个单例。由于我还没有关心其中的任何一个,所以我将把它们排除在外。该框架在终端中编译并运行良好,所以我知道内部连接正常工作。

ContentView.swift 文件的开头是这样的:

import SwiftUI
import Game2



struct ProgressBar: View {
    @Binding var value: Float
    
    var body: some View {
    
        GeometryReader { geometry in
            ZStack {
                Rectangle().frame(width: geometry.size.width , height: geometry.size.height)
                    .opacity(0.3)
                    .foregroundColor(Color(UIColor.darkGray))
                HStack {
                    Rectangle().frame(width: 200    , height: geometry.size.height)
                        .foregroundColor(Color(UIColor.red))
                    Spacer()
                    Rectangle().frame(width: 60.0, height: geometry.size.height)
                        .foregroundColor(Color(UIColor.blue))

                }

            }.cornerRadius(45.0)
        }
    }
}

struct ContentView: View {
    
    @State var progressValue: Float = 0.4
    
    
    var body: some View {
        VStack{
            HStack(){
                Group() {

……等等

所以,实际上没有更多信息,这基本上就是我所描述的。构建这个没有错误,但是一旦我在 Game2 中包含对数据的任何引用,各种错误就会阻止构建。

我问的是比“修复我的代码”更一般的问题,我试图了解包含自创建基础并将它们作为单一视图应用程序的业务逻辑包含在内的要求。我找不到任何对我有帮助的信息。