gpt4 book ai didi

swift - 无法在 SwiftUI 中使用自定义 View

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:05 27 4
gpt4 key购买 nike

对于我的 SwiftUI 应用程序,我创建了一个简单的 Title View ,它具有设置的字体大小和文本颜色。 Title声明如下:

struct Title: View {
var string: String

var body: some View {
Text(string)
.font(.system(size: 32))
.color(Color.black)
}
}

现在我的内容 View 正文中有以下文本对象:

var body: some View {
VStack(alignment: .leading) {
Text("Welcome")
.font(.largeTitle)
.color(Color.black)
Text("to SwiftUI")
.font(.largeTitle)
.color(Color.secondary)
}
}

现在,我想用我的 Title 替换这两个 Text:

var body: some View {
VStack(alignment: .leading) {
Title("Welcome")
Title("to SwiftUI")
}
}

替换 View 后,我从 Xcode 收到了一些看似无关的错误消息,这些消息阻止了应用程序的编译:

Static member 'leading' cannot be used on instance of type 'HorizontalAlignment'

'(LocalizedStringKey) -> Text' is not convertible to '(LocalizedStringKey, String?, Bundle?, StaticString?) -> Text'

'Font' is not convertible to 'Font?'

...等等。恢复为 Text 而不是 Title “修复”了问题。

有趣的是,我还有一个自定义的 PrimaryButton View ,我可以毫无问题地添加它:

struct PrimaryButton: View {
var title: String

var body: some View {
Button(action: { print("tapped") }) {
Text(title)
.font(Font.primaryButton)
.offset(y: 1)
.padding(.horizontal, 20)
.padding(.vertical, 14)
}
}
}

...然后使用它:

PrimaryButton(title: "Let's go")

问题

这只是一个测试版问题,还是我遗漏了什么?

最佳答案

您需要将 string: 添加到您的 Title() 初始化程序中:

var body: some View {
VStack(alignment: .leading) {
Title(string: "Welcome")
Title(string: "to SwiftUI")
}
}

编译器错误目前具有误导性,并不靠近真正的问题所在。

关于swift - 无法在 SwiftUI 中使用自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56472784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com