SwiftUI View和Swift Package Manager

斯图尔特·林奇

我正在尝试创建一个Swift包,它基本上是一个SwiftUI视图。我在这里创建了一个示例来显示正在发生的事情。打包的内容无关紧要,我只是在View中包含了一些@State和@Binding变量,所以我得到的错误与实际包装中的错误相同。View结构是这个。

import SwiftUI

public struct SampleView: View {
    @Binding var myNum:Int
    @State var fixedText:String = ""
    var myText = ""
    var optional: String?


   public  var body: some View {
        VStack {
            if optional != nil {
                Text(optional!)
            }
            Text(myText)
            Text("Parent number: \(myNum)")
            Text("\(fixedText)")
            Button("Increment num") {
                self.myNum += 1
            }.foregroundColor(.blue)
            Button("Change Parent Text") {
                self.fixedText = "Only Changes Child"
            }.foregroundColor(.blue)
        }.background(Color.red)
            .foregroundColor(.white)
    }
}

当我添加包并将其导入到项目中的一个视图中时,我应该能够使用“执行以下操作”,如果该视图不属于Swift包,则可以执行以下操作:

 SampleView(myNum: $myNum,
             fixedText: parentText,
             myText: "Display Text Passed from parent")

但是,我没有代码完成,并且出现错误:

'SampleView' initializer is inaccessible due to 'internal' protection level

我已经在SampeView结构上尝试了各种初始化,但是仍然遇到各种不同的错误。我只是不明白如何在这里解决访问级别。有人可以帮忙吗?屏幕截图也在这里。在此处输入图片说明

他的脾气

这是Package中的预期声明(已通过Xcode 11.2.1 / iOS 13.2.2测试)。请注意,@State不允许在View之外使用,因此所有需要同步的内容都应通过传递Binding

public struct SampleView: View {
    @Binding var myNum:Int
    @Binding var fixedText:String
    var myText: String
    var optional: String?

    public init(myNum: Binding<Int>, fixedText: Binding<String>, 
                myText: String = "", optional: String? = nil) {
        self._myNum = myNum
        self._fixedText = fixedText
        self.myText = myText
        self.optional = optional
    }

    public var body: some View {
        VStack {
            if optional != nil {
                Text(optional!)
            }
            Text(myText)
            Text("Parent number: \(myNum)")
            Text("\(fixedText)")
            Button("Increment num") {
                self.myNum += 1
            }.foregroundColor(.blue)
            Button("Change Parent Text") {
                self.fixedText = "Only Changes Child"
            }.foregroundColor(.blue)
        }.background(Color.red)
            .foregroundColor(.white)
    }
}

和用法:

@State private var myNum: Int = 1
@State private var parentText = "Test"
var body: some View {
    SampleView(myNum: $myNum,
               fixedText: $parentText,
               myText: "Display Text Passed from parent")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Swift Package Manager的binaryTarget?

来自分类Dev

带有Multiplatform App的Swift Package Manager

来自分类Dev

使用Swift Package Manager的Swift IOS库无法编译

来自分类Dev

Specify minimum macOS version for Swift Package Manager with Swift 5

来自分类Dev

使用Swift Package Manager添加目标依赖项时出错

来自分类Dev

如何解决Swift Package Manager目标重叠源错误

来自分类Dev

使用Swift Package Manager添加其他库

来自分类Dev

Xcode 11-Swift Package Manager找不到清单

来自分类Dev

从现有的Xcode项目中导出用于Swift Package Manager的Package.swift

来自分类Dev

如何通过Swift Package Manager更新导入到Xcode项目的Swift包?

来自分类Dev

使用Swift 5为Swift Package Manager指定最低macOS版本

来自分类Dev

使用Swift Package Manager时,如何生成Xcode项目文件进行开发

来自分类Dev

无法使用自定义路径在Swift Package Manager中解析清单文件

来自分类Dev

Swift Package Manager-对活动分支的依赖不会提取新的提交

来自分类Dev

Swift Package Manager中的可本地化字符串

来自分类Dev

如何在Xcode中开发几个Swift Package Manager软件包?

来自分类Dev

Swift Package Manager,如何将软件包添加为开发依赖项?

来自分类Dev

如何在Swift Package Manager中将本地库添加为依赖项

来自分类Dev

正在通过Swift Package Manager安装Stripe iOS SDK,但由于“未加载库”而崩溃

来自分类Dev

Swift Package Manager-类型“捆绑”没有成员“模块”错误

来自分类Dev

Swift Package Manager-分发一个已经存在的Cocoapod

来自分类Dev

在Flutter项目中使用Xcode中的Swift Package Manager添加依赖项时生成错误

来自分类Dev

Android Package Manager已死于TransactionTooLargeException

来自分类Dev

从Package Manager vs dnx添加迁移

来自分类Dev

Nuget Package Manager显示未安装的软件包的更新

来自分类Dev

将JQuery包含在Package Manager中-JQuery

来自分类Dev

从Package Manager控制台安装签名的ServiceStack程序集

来自分类Dev

Pip vs Package Manager,用于处理Python软件包

来自分类Dev

Pip vs Package Manager,用于处理Python软件包

Related 相关文章

  1. 1

    如何使用Swift Package Manager的binaryTarget?

  2. 2

    带有Multiplatform App的Swift Package Manager

  3. 3

    使用Swift Package Manager的Swift IOS库无法编译

  4. 4

    Specify minimum macOS version for Swift Package Manager with Swift 5

  5. 5

    使用Swift Package Manager添加目标依赖项时出错

  6. 6

    如何解决Swift Package Manager目标重叠源错误

  7. 7

    使用Swift Package Manager添加其他库

  8. 8

    Xcode 11-Swift Package Manager找不到清单

  9. 9

    从现有的Xcode项目中导出用于Swift Package Manager的Package.swift

  10. 10

    如何通过Swift Package Manager更新导入到Xcode项目的Swift包?

  11. 11

    使用Swift 5为Swift Package Manager指定最低macOS版本

  12. 12

    使用Swift Package Manager时,如何生成Xcode项目文件进行开发

  13. 13

    无法使用自定义路径在Swift Package Manager中解析清单文件

  14. 14

    Swift Package Manager-对活动分支的依赖不会提取新的提交

  15. 15

    Swift Package Manager中的可本地化字符串

  16. 16

    如何在Xcode中开发几个Swift Package Manager软件包?

  17. 17

    Swift Package Manager,如何将软件包添加为开发依赖项?

  18. 18

    如何在Swift Package Manager中将本地库添加为依赖项

  19. 19

    正在通过Swift Package Manager安装Stripe iOS SDK,但由于“未加载库”而崩溃

  20. 20

    Swift Package Manager-类型“捆绑”没有成员“模块”错误

  21. 21

    Swift Package Manager-分发一个已经存在的Cocoapod

  22. 22

    在Flutter项目中使用Xcode中的Swift Package Manager添加依赖项时生成错误

  23. 23

    Android Package Manager已死于TransactionTooLargeException

  24. 24

    从Package Manager vs dnx添加迁移

  25. 25

    Nuget Package Manager显示未安装的软件包的更新

  26. 26

    将JQuery包含在Package Manager中-JQuery

  27. 27

    从Package Manager控制台安装签名的ServiceStack程序集

  28. 28

    Pip vs Package Manager,用于处理Python软件包

  29. 29

    Pip vs Package Manager,用于处理Python软件包

热门标签

归档